Re: [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-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 |