Thread: [Lcms-user] lcms2-2.8 release candidate 1 available for testing
An ICC-based CMM for color management
                
                Brought to you by:
                
                    mm2
                    
                
            
            
        
        
        
    | 
      
      
      From: Marti M. <mar...@li...> - 2016-06-06 19:33:59
       | 
| Hi, After some time of inactivity I've taken again the development of lcms, so here is the first release candidate for lcms 2.8 Most of code is sponsored by Alien Skin Software, thank you so much for this great contribution! Aside of bugfixes, 2.8 does support alpha channel transportation and a new transform stride function and plug-in which can be used to increase significantly the processing speed. See here the release candidate http://www.littlecms.com/lcms2-2.8rc1.tar.gz Best regards Marti Maria The LittleCMS project http://www.littlecms.com | 
| 
      
      
      From: Noel C. <NCa...@Pr...> - 2016-06-07 02:37:13
       | 
| Thank you, Marti, We're definitely going to be able to make use of the "copy alpha" functionality. It eats up a surprising amount of time to handle the alpha separately. -Noel From: Marti Maria [mailto:mar...@li...] Sent: Mon, June 6, 2016 3:36 PM To: lcm...@li... Subject: [Lcms-user] lcms2-2.8 release candidate 1 available for testing Hi, After some time of inactivity I've taken again the development of lcms, so here is the first release candidate for lcms 2.8 Most of code is sponsored by Alien Skin Software, thank you so much for this great contribution! Aside of bugfixes, 2.8 does support alpha channel transportation and a new transform stride function and plug-in which can be used to increase significantly the processing speed. See here the release candidate http://www.littlecms.com/lcms2-2.8rc1.tar.gz Best regards Marti Maria The LittleCMS project http://www.littlecms.com | 
| 
      
      
      From: Boudewijn R. <bo...@va...> - 2016-06-07 06:27:18
       | 
| On Mon, 6 Jun 2016, Marti Maria wrote: > > After some time of inactivity I’ve taken again the development of lcms, so here is the first release candidate for lcms > 2.8 > > Most of code is sponsored by Alien Skin Software, thank you so much for this great contribution! > > Aside of bugfixes, 2.8 does support alpha channel transportation and a new transform stride function and plug-in which > can be used to increase significantly the processing speed. > > See here the release candidate http://www.littlecms.com/lcms2-2.8rc1.tar.gz > Awesome news! -- Boudewijn Rempt | http://www.krita.org, http://www.valdyas.org | 
| 
      
      
      From: Noel C. <NCa...@Pr...> - 2016-06-17 16:37:01
       | 
| On Mon, 6 Jun 2016, Marti Maria wrote: > After some time of inactivity I?ve taken again the development of > lcms, so here is the first release candidate for lcms > 2.8 We have put the 2.8 beta library through quite a bit of testing over the past weeks and have uncovered no problems. We even ran a number of runs with the Microsoft Application Verifier with all the checks turned on and never had a bit of trouble. No leaks, no buffer overflows. We did a LOT of multi-threaded transform operations. Little CMS is proving to be very robust. Thank you! -Noel | 
| 
      
      
      From: Noel C. <NCa...@Pr...> - 2016-06-07 19:34:01
       | 
| Hi Marti,
 
More info related to the cmsFLAGS_COPY_ALPHA flag...
 
Please allow me to make some suggestions to improve the speed of
in-place color conversions (i.e., conversions of colors in a single
image, where no copy is occurring from one buffer to another):
 
 
1.  Add these statements to the _cmsHandleExtraChannels() function:
 
               // Exit early if in-place color-management is occurring -
no need to copy extra channels to themselves.
               if (p->InputFormat == p->OutputFormat && in == out)
                              return;
 
I've tested the above and it does make a difference in speed for the
common/typical operation of in-place color-management.
 
 
2.  I've also tested hand-optimizing copying the extra info for one
extra channel each for input/output - another very typical scenario -
and by reducing the array variables to simple variables the entire
innermost loop can be run only from registers.  It does make a
difference in the speed when one extra channel is copied (e.g., for
RGBA).  That actually brought the LittleCMS time to do the task on 8 bit
to 8 bit transforms in line with the optimized code we had already
written.
 
Here is a copy of the optimized c file.  It's all yours to include in
the package if you'd like to use it.  All of the changes are in the
_cmsHandleExtraChannels() function.
 
http://Noel.ProDigitalSoftware.com/temp/cmsalpha.c
 
Using Visual Studio 2015, the assembly instructions for the innermost
per-pixel loop for the optimized "one extra field" function are reduced
by the optimizer to this quite efficient set:
 
$LL7@cmsHandleE:
 
; 466  :
copyValueFn(DestPtr, SourcePtr);
 
            mov    rdx, rbx
            mov    rcx, rdi
            call      r15
 
; 468  :                                                SourcePtr +=
SourceIncrements[0];
 
            add      rbx, r14
 
; 469  :                                                DestPtr   +=
DestIncrements[0];
 
            add      rdi, r12
            sub      rsi, 1
            jne       SHORT $LL7@cmsHandleE
 
-Noel
 
From: Marti Maria [mailto:mar...@li...] 
Sent: Mon, June 6, 2016 3:36 PM
To: lcm...@li...
Subject: [Lcms-user] lcms2-2.8 release candidate 1 available for testing
 
 
Hi,
 
After some time of inactivity I've taken again the development of lcms,
so here is the first release candidate for lcms 2.8
 
Most of code is sponsored by Alien Skin Software, thank you so much for
this great contribution!
 
Aside of bugfixes, 2.8 does support alpha channel transportation and a
new transform stride function and plug-in which can be used to increase
significantly the processing speed.
 
See here the release candidate
http://www.littlecms.com/lcms2-2.8rc1.tar.gz
 
Best regards
 
Marti Maria
The LittleCMS project
http://www.littlecms.com 
 
 | 
| 
      
      
      From: Marti M. <mar...@li...> - 2016-06-08 06:12:36
       | 
| Hi, Looks great! I have added your changes to the git repository. Many thanks for your contribution. Best regards, Marti Maria The LittleCMS project http://www.littlecms.com From: Noel Carboni [mailto:NCa...@Pr...] Sent: martes, 7 de junio de 2016 21:34 To: 'Marti Maria' <mar...@li...>; lcm...@li... Subject: RE: [Lcms-user] lcms2-2.8 release candidate 1 available for testing Hi Marti, More info related to the cmsFLAGS_COPY_ALPHA flag... Please allow me to make some suggestions to improve the speed of in-place color conversions (i.e., conversions of colors in a single image, where no copy is occurring from one buffer to another): 1. Add these statements to the _cmsHandleExtraChannels() function: // Exit early if in-place color-management is occurring - no need to copy extra channels to themselves. if (p->InputFormat == p->OutputFormat && in == out) return; I've tested the above and it does make a difference in speed for the common/typical operation of in-place color-management. 2. I've also tested hand-optimizing copying the extra info for one extra channel each for input/output - another very typical scenario - and by reducing the array variables to simple variables the entire innermost loop can be run only from registers. It does make a difference in the speed when one extra channel is copied (e.g., for RGBA). That actually brought the LittleCMS time to do the task on 8 bit to 8 bit transforms in line with the optimized code we had already written. Here is a copy of the optimized c file. It's all yours to include in the package if you'd like to use it. All of the changes are in the _cmsHandleExtraChannels() function. http://Noel.ProDigitalSoftware.com/temp/cmsalpha.c Using Visual Studio 2015, the assembly instructions for the innermost per-pixel loop for the optimized "one extra field" function are reduced by the optimizer to this quite efficient set: $LL7@cmsHandleE: ; 466 : copyValueFn(DestPtr, SourcePtr); mov rdx, rbx mov rcx, rdi call r15 ; 468 : SourcePtr += SourceIncrements[0]; add rbx, r14 ; 469 : DestPtr += DestIncrements[0]; add rdi, r12 sub rsi, 1 jne SHORT $LL7@cmsHandleE -Noel From: Marti Maria [mailto:mar...@li...] Sent: Mon, June 6, 2016 3:36 PM To: lcm...@li... <mailto:lcm...@li...> Subject: [Lcms-user] lcms2-2.8 release candidate 1 available for testing Hi, After some time of inactivity I've taken again the development of lcms, so here is the first release candidate for lcms 2.8 Most of code is sponsored by Alien Skin Software, thank you so much for this great contribution! Aside of bugfixes, 2.8 does support alpha channel transportation and a new transform stride function and plug-in which can be used to increase significantly the processing speed. See here the release candidate http://www.littlecms.com/lcms2-2.8rc1.tar.gz Best regards Marti Maria The LittleCMS project http://www.littlecms.com |