Warning, /graphics/krita/3rdparty/ext_lcms2/0003-Revert-Fix-LUT-based-optimization-on-8-bits.patch is written in an unsupported language. File is not indexed.

0001 From 592d81225a0e1689b11cd15fa8b3a239ca6685ff Mon Sep 17 00:00:00 2001
0002 From: "L. E. Segovia" <amy@amyspark.me>
0003 Date: Mon, 28 Nov 2022 18:56:57 -0300
0004 Subject: [PATCH] Revert "Fix LUT based optimization on 8 bits"
0005 
0006 This reverts commit d24a40c9cc685b7145e8082606d5d9384d08e472.
0007 ---
0008  plugins/fast_float/src/fast_8_tethra.c |   6 +-
0009  plugins/fast_float/testbed/demo_cmyk.c | 151 -------------------------
0010  2 files changed, 5 insertions(+), 152 deletions(-)
0011  delete mode 100644 plugins/fast_float/testbed/demo_cmyk.c
0012 
0013 diff --git a/plugins/fast_float/src/fast_8_tethra.c b/plugins/fast_float/src/fast_8_tethra.c
0014 index 84c36a0..7f72184 100644
0015 --- a/plugins/fast_float/src/fast_8_tethra.c
0016 +++ b/plugins/fast_float/src/fast_8_tethra.c
0017 @@ -414,7 +414,11 @@ cmsBool Optimize8BitRGBTransform(_cmsTransform2Fn* TransformFn,
0018      // Check for validity
0019      lIsSuitable = TRUE;
0020      for (t=0; (lIsSuitable && (t < 3)); t++) {
0021 -        
0022 +
0023 +        // Exclude if non-monotonic
0024 +        if (!cmsIsToneCurveMonotonic(Trans[t]))
0025 +            lIsSuitable = FALSE;         
0026 +
0027          if (IsDegenerated(Trans[t]))
0028              lIsSuitable = FALSE;
0029      }
0030 diff --git a/plugins/fast_float/testbed/demo_cmyk.c b/plugins/fast_float/testbed/demo_cmyk.c
0031 deleted file mode 100644
0032 index d41f3f5..0000000
0033 --- a/plugins/fast_float/testbed/demo_cmyk.c
0034 +++ /dev/null
0035 @@ -1,151 +0,0 @@
0036 -//---------------------------------------------------------------------------------
0037 -//
0038 -//  Little Color Management System, fast floating point extensions
0039 -//  Copyright (c) 1998-2022 Marti Maria Saguer, all rights reserved
0040 -//
0041 -//
0042 -// This program is free software: you can redistribute it and/or modify
0043 -// it under the terms of the GNU General Public License as published by
0044 -// the Free Software Foundation, either version 3 of the License, or
0045 -// (at your option) any later version.
0046 -// 
0047 -// This program is distributed in the hope that it will be useful,
0048 -// but WITHOUT ANY WARRANTY; without even the implied warranty of
0049 -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0050 -// GNU General Public License for more details.
0051 -// 
0052 -// You should have received a copy of the GNU General Public License
0053 -// along with this program.  If not, see <http://www.gnu.org/licenses/>.
0054 -//
0055 -//---------------------------------------------------------------------------------
0056 -
0057 -#include "lcms2_fast_float.h"
0058 -
0059 -#include <stdlib.h>
0060 -#include <memory.h>
0061 -
0062 -static
0063 -void Fail(const char* frm, ...)
0064 -{
0065 -    va_list args;
0066 -
0067 -    va_start(args, frm);
0068 -    vprintf(frm, args);
0069 -    va_end(args);
0070 -    exit(1);
0071 -}
0072 -
0073 -
0074 -
0075 -#define ALIGNED_SIZE(a,x)  (((x)+((a) - 1)) & ~((a) - 1))
0076 -
0077 -
0078 -static
0079 -void* make_image(size_t size_x, size_t size_y, cmsBool fill_rgb, cmsUInt32Number* stride_x)
0080 -{
0081 -    cmsUInt32Number size_x_aligned = ALIGNED_SIZE(16, size_x);
0082 -    cmsUInt32Number line_size_in_bytes = size_x_aligned * sizeof(cmsUInt32Number); // RGBA
0083 -
0084 -    cmsUInt8Number* ptr_image = (cmsUInt8Number*) calloc(size_y, line_size_in_bytes);
0085 -    
0086 -    if (ptr_image == NULL) Fail("Couldn't allocate memory for image");
0087 -
0088 -    if (fill_rgb)
0089 -    {
0090 -        size_t line;
0091 -
0092 -        for (line = 0; line < size_y; line++)
0093 -        {
0094 -            cmsUInt32Number* ptr_line = (cmsUInt32Number*)(ptr_image + line_size_in_bytes * line);          
0095 -            cmsUInt32Number argb = 0;
0096 -            int col;
0097 -
0098 -            for (col = 0; col < size_x; col++)
0099 -                *ptr_line++ = argb++;
0100 -                
0101 -        }
0102 -    }
0103 -
0104 -    *stride_x = line_size_in_bytes;
0105 -    return (void*) ptr_image;
0106 -}
0107 -
0108 -#define SIZE_X 10000
0109 -#define SIZE_Y 10000
0110 -
0111 -static
0112 -cmsFloat64Number MPixSec(cmsFloat64Number diff)
0113 -{
0114 -    cmsFloat64Number seconds = (cmsFloat64Number)diff / (cmsFloat64Number)CLOCKS_PER_SEC;
0115 -    return (SIZE_X * SIZE_Y) / (1024.0 * 1024.0 * seconds);
0116 -}
0117 -
0118 -
0119 -
0120 -static
0121 -cmsFloat64Number speed_test(void)
0122 -{
0123 -    clock_t atime;
0124 -    cmsFloat64Number diff;
0125 -    cmsHPROFILE hProfileIn;
0126 -    cmsHPROFILE hProfileOut;   
0127 -    cmsHTRANSFORM xform;
0128 -    void* image_in;
0129 -    void* image_out;
0130 -    cmsUInt32Number stride_rgb_x, stride_cmyk_x;
0131 -
0132 -
0133 -    hProfileIn = cmsOpenProfileFromFile("sRGB Color Space Profile.icm", "r");
0134 -    hProfileOut = cmsOpenProfileFromFile("USWebCoatedSWOP.icc", "r");
0135 -
0136 -    if (hProfileIn == NULL || hProfileOut == NULL)
0137 -        Fail("Unable to open profiles");
0138 -
0139 -    xform = cmsCreateTransform(hProfileIn, TYPE_RGBA_8, hProfileOut, TYPE_CMYK_8, INTENT_PERCEPTUAL, 0);
0140 -    cmsCloseProfile(hProfileIn);
0141 -    cmsCloseProfile(hProfileOut);
0142 -
0143 -    
0144 -    image_in = make_image(SIZE_X, SIZE_Y, TRUE, &stride_rgb_x);
0145 -    image_out = make_image(SIZE_X, SIZE_Y, FALSE, &stride_cmyk_x);
0146 -
0147 -    atime = clock();
0148 -
0149 -    cmsDoTransformLineStride(xform, image_in, image_out, SIZE_X, SIZE_Y, stride_rgb_x, stride_cmyk_x, 0, 0);
0150 -    
0151 -    diff = clock() - atime;
0152 -
0153 -    free(image_in);
0154 -    free(image_out);
0155 -
0156 -    cmsDeleteTransform(xform);
0157 -    return MPixSec(diff);
0158 -}
0159 -
0160 -
0161 -int main(void)
0162 -{
0163 -    cmsFloat64Number without_plugin;
0164 -    cmsFloat64Number with_plugin;
0165 -    
0166 -    fprintf(stdout, "DEMO of littleCMS fast float plugin: RGBA -> CMYK in Megapixels per second\n");  fflush(stdout);
0167 -
0168 -    // filling cache
0169 -    fprintf(stdout, "Wait CPU cache to stabilize: ");  fflush(stdout);
0170 -    speed_test();
0171 -    fprintf(stdout, "Ok\n");
0172 -
0173 -    fprintf(stdout, "Without plugin: ");  fflush(stdout);
0174 -    without_plugin = speed_test();
0175 -    fprintf(stdout, "%.2f\n", without_plugin); fflush(stdout);
0176 -
0177 -    cmsPlugin(cmsFastFloatExtensions());
0178 -
0179 -    fprintf(stdout, "With plugin: ");  fflush(stdout);
0180 -    with_plugin = speed_test();
0181 -    fprintf(stdout, "%.2f\n", with_plugin); fflush(stdout);
0182 -    
0183 -    fprintf(stdout, "x %2.2f\n", (with_plugin/without_plugin)); fflush(stdout);
0184 -
0185 -    return 0;    
0186 -}
0187 \ No newline at end of file
0188 -- 
0189 2.37.1.windows.1
0190