[babl] babl: remove unused static linear luts for u8 rgb space converters



commit b5972c2330efdf97ec6129903b369ed4427b6498
Author: Øyvind Kolås <pippin gimp org>
Date:   Thu Sep 7 01:25:33 2017 +0200

    babl: remove unused static linear luts for u8 rgb space converters

 babl/babl-fish-path.c  |   11 ++-----
 babl/babl-matrix.h     |   78 ++++++++++++++++++++++++------------------------
 babl/babl-space.c      |   23 +-------------
 babl/babl-trc.c        |    8 ++++-
 tools/babl-benchmark.c |   20 +++++-------
 5 files changed, 58 insertions(+), 82 deletions(-)
---
diff --git a/babl/babl-fish-path.c b/babl/babl-fish-path.c
index 298d36a..b7133af 100644
--- a/babl/babl-fish-path.c
+++ b/babl/babl-fish-path.c
@@ -221,18 +221,13 @@ get_conversion_path (PathContext *pc,
           fpi.destination = pc->to_format;
 
           get_path_instrumentation (&fpi, pc->current_path, &path_cost, &ref_cost, &path_error);
-          //path_cost += pc->current_path->count * 1000; // punish long chains
           if(debug_conversions && current_length == 1)
             fprintf (stderr, "%s  error:%f cost:%f  \n",
-                 babl_get_name (pc->current_path->items[0]),
-                 /*babl_get_name (pc->fish_path->fish.source),
-                 babl_get_name (pc->fish_path->fish.destination),*/
-                 path_error,
-                 path_cost /*, current_length*/);
+                 babl_get_name (pc->current_path->items[0]), path_error, path_cost);
 
           if ((path_cost < ref_cost) && /* do not use paths that took longer to compute than reference */
-              (path_cost < pc->fish_path->fish_path.cost) &&
-              (path_error <= legal_error )
+              (path_cost < pc->fish_path->fish_path.cost) && // best thus far
+              (path_error <= legal_error )               // within tolerance
               )
             {
               /* We have found the best path so far,
diff --git a/babl/babl-matrix.h b/babl/babl-matrix.h
index d4e29d9..8f331a5 100644
--- a/babl/babl-matrix.h
+++ b/babl/babl-matrix.h
@@ -97,16 +97,16 @@ static inline void babl_matrix_mul_vectorf (const double *mat, const float *v_in
 
 static inline void babl_matrix_mul_vectorff (const float *mat, const float *v_in, float *v_out)
 {
-  float a = v_in[0], b = v_in[1], c = v_in[2];
-  float m_0_0 = m(mat, 0, 0);
-  float m_0_1 = m(mat, 0, 1);
-  float m_0_2 = m(mat, 0, 2);
-  float m_1_0 = m(mat, 1, 0);
-  float m_1_1 = m(mat, 1, 1);
-  float m_1_2 = m(mat, 1, 2);
-  float m_2_0 = m(mat, 2, 0);
-  float m_2_1 = m(mat, 2, 1);
-  float m_2_2 = m(mat, 2, 2);
+  const float a = v_in[0], b = v_in[1], c = v_in[2];
+  const float m_0_0 = m(mat, 0, 0);
+  const float m_0_1 = m(mat, 0, 1);
+  const float m_0_2 = m(mat, 0, 2);
+  const float m_1_0 = m(mat, 1, 0);
+  const float m_1_1 = m(mat, 1, 1);
+  const float m_1_2 = m(mat, 1, 2);
+  const float m_2_0 = m(mat, 2, 0);
+  const float m_2_1 = m(mat, 2, 1);
+  const float m_2_2 = m(mat, 2, 2);
 
   v_out[0] = m_0_0 * a + m_0_1 * b + m_0_2 * c;
   v_out[1] = m_1_0 * a + m_1_1 * b + m_1_2 * c;
@@ -117,18 +117,18 @@ static inline void babl_matrix_mul_vectorff_buf3 (const float *mat, const float
                                                   int samples)
 {
   int i;
-  float m_0_0 = m(mat, 0, 0);
-  float m_0_1 = m(mat, 0, 1);
-  float m_0_2 = m(mat, 0, 2);
-  float m_1_0 = m(mat, 1, 0);
-  float m_1_1 = m(mat, 1, 1);
-  float m_1_2 = m(mat, 1, 2);
-  float m_2_0 = m(mat, 2, 0);
-  float m_2_1 = m(mat, 2, 1);
-  float m_2_2 = m(mat, 2, 2);
+  const float m_0_0 = m(mat, 0, 0);
+  const float m_0_1 = m(mat, 0, 1);
+  const float m_0_2 = m(mat, 0, 2);
+  const float m_1_0 = m(mat, 1, 0);
+  const float m_1_1 = m(mat, 1, 1);
+  const float m_1_2 = m(mat, 1, 2);
+  const float m_2_0 = m(mat, 2, 0);
+  const float m_2_1 = m(mat, 2, 1);
+  const float m_2_2 = m(mat, 2, 2);
   for (i = 0; i < samples; i ++)
   {
-    float a = v_in[0], b = v_in[1], c = v_in[2];
+    const float a = v_in[0], b = v_in[1], c = v_in[2];
 
     v_out[0] = m_0_0 * a + m_0_1 * b + m_0_2 * c;
     v_out[1] = m_1_0 * a + m_1_1 * b + m_1_2 * c;
@@ -141,16 +141,16 @@ static inline void babl_matrix_mul_vectorff_buf3 (const float *mat, const float
 static inline void babl_matrix_mul_vectorff_buf4 (const float *mat, const float *v_in, float *v_out,
                                                   int samples)
 {
+  const float m_0_0 = m(mat, 0, 0);
+  const float m_0_1 = m(mat, 0, 1);
+  const float m_0_2 = m(mat, 0, 2);
+  const float m_1_0 = m(mat, 1, 0);
+  const float m_1_1 = m(mat, 1, 1);
+  const float m_1_2 = m(mat, 1, 2);
+  const float m_2_0 = m(mat, 2, 0);
+  const float m_2_1 = m(mat, 2, 1);
+  const float m_2_2 = m(mat, 2, 2);
   int i;
-  float m_0_0 = m(mat, 0, 0);
-  float m_0_1 = m(mat, 0, 1);
-  float m_0_2 = m(mat, 0, 2);
-  float m_1_0 = m(mat, 1, 0);
-  float m_1_1 = m(mat, 1, 1);
-  float m_1_2 = m(mat, 1, 2);
-  float m_2_0 = m(mat, 2, 0);
-  float m_2_1 = m(mat, 2, 1);
-  float m_2_2 = m(mat, 2, 2);
   for (i = 0; i < samples; i ++)
   {
     float a = v_in[0], b = v_in[1], c = v_in[2];
@@ -168,18 +168,18 @@ static inline void babl_matrix_mul_vector_buf4 (const double *mat, const double
                                                 int samples)
 {
   int i;
-  double m_0_0 = m(mat, 0, 0);
-  double m_0_1 = m(mat, 0, 1);
-  double m_0_2 = m(mat, 0, 2);
-  double m_1_0 = m(mat, 1, 0);
-  double m_1_1 = m(mat, 1, 1);
-  double m_1_2 = m(mat, 1, 2);
-  double m_2_0 = m(mat, 2, 0);
-  double m_2_1 = m(mat, 2, 1);
-  double m_2_2 = m(mat, 2, 2);
+  const double m_0_0 = m(mat, 0, 0);
+  const double m_0_1 = m(mat, 0, 1);
+  const double m_0_2 = m(mat, 0, 2);
+  const double m_1_0 = m(mat, 1, 0);
+  const double m_1_1 = m(mat, 1, 1);
+  const double m_1_2 = m(mat, 1, 2);
+  const double m_2_0 = m(mat, 2, 0);
+  const double m_2_1 = m(mat, 2, 1);
+  const double m_2_2 = m(mat, 2, 2);
   for (i = 0; i < samples; i ++)
   {
-    double a = v_in[0], b = v_in[1], c = v_in[2];
+    const double a = v_in[0], b = v_in[1], c = v_in[2];
 
     v_out[0] = m_0_0 * a + m_0_1 * b + m_0_2 * c;
     v_out[1] = m_1_0 * a + m_1_1 * b + m_1_2 * c;
diff --git a/babl/babl-space.c b/babl/babl-space.c
index df3dde9..40a21c9 100644
--- a/babl/babl-space.c
+++ b/babl/babl-space.c
@@ -583,13 +583,6 @@ universal_nonlinear_rgb_u8_converter (const Babl *conversion,unsigned char *src_
   uint8_t *rgb_out_u8 = (void*)dst_char;
 
   float *rgba_out = babl_malloc (sizeof(float) * 4 * samples);
-  static float linear_lut_u8[258]={-1.0,};
-
-  if (linear_lut_u8[0] < 0)
-  {
-    for (i = 0; i < 256; i++)
-      linear_lut_u8[i] = i / 255.0;
-  }
 
   for (i = 0; i < samples; i++)
   {
@@ -689,13 +682,6 @@ universal_nonlinear_rgba_u8_converter_sse2 (const Babl *conversion,unsigned char
   uint8_t *rgba_out_u8 = (void*)dst_char;
 
   float *rgba_out = babl_malloc (sizeof(float) * 4 * samples);
-  static float linear_lut_u8[258]={-1.0,};
-
-  if (linear_lut_u8[0] < 0)
-  {
-    for (i = 0; i < 256; i++)
-      linear_lut_u8[i] = i / 255.0;
-  }
 
   for (i = 0; i < samples * 4; i+= 4)
   {
@@ -733,13 +719,6 @@ universal_nonlinear_rgb_u8_converter_sse2 (const Babl *conversion,unsigned char
   uint8_t *rgb_out_u8 = (void*)dst_char;
 
   float *rgba_out = babl_malloc (sizeof(float) * 4 * samples);
-  static float linear_lut_u8[258]={-1.0,};
-
-  if (linear_lut_u8[0] < 0)
-  {
-    for (i = 0; i < 256; i++)
-      linear_lut_u8[i] = i / 255.0;
-  }
 
   for (i = 0; i < samples; i++)
   {
@@ -827,7 +806,7 @@ add_rgb_adapter (Babl *babl,
                        "linear", universal_nonlinear_rgb_u8_converter_sse2,
                        NULL));
     }
-    else
+    //else
 #endif
     {
        prep_conversion(babl_conversion_new(babl_format_with_space("RGBA float", space),
diff --git a/babl/babl-trc.c b/babl/babl-trc.c
index d0821cd..46bb98e 100644
--- a/babl/babl-trc.c
+++ b/babl/babl-trc.c
@@ -38,10 +38,14 @@ static inline float babl_trc_lut_from_linear (const Babl *trc_, float x)
   entry = x * (trc->lut_size-1);
   diff =  ( (x * (trc->lut_size-1)) - entry);
 
-  if (entry >= trc->lut_size) entry = trc->lut_size - 1;
+  if (entry >= trc->lut_size -1)
+  {
+    entry = trc->lut_size - 1;
+    diff = 0.0;
+  }
   else if (entry < 0) entry = 0;
 
-  if (diff > 0.0 && entry < trc->lut_size-1)
+  if (diff > 0.0)
   {
     ret = trc->inv_lut[entry] * (1.0 - diff) + trc->inv_lut[entry+1] * diff;
   }
diff --git a/tools/babl-benchmark.c b/tools/babl-benchmark.c
index 538ddc3..1f1f90c 100644
--- a/tools/babl-benchmark.c
+++ b/tools/babl-benchmark.c
@@ -75,20 +75,18 @@ test (void)
      babl_format("R'G'B'A u8"),
      babl_format("Y float"),
      babl_format("R'G'B'A u16"),
-     babl_format_with_space("R'G'B'A u8",     babl_space("ProPhoto")),
      babl_format_with_space("RGBA float",     babl_space("ProPhoto")),
      babl_format_with_space("R'G'B' u16",     babl_space("ProPhoto")),
 #endif
-     babl_format("CIE Lab float"),
-     babl_format("RGBA float"),
-     babl_format("R'G'B'A float"),
-     babl_format("Y float"),
-     babl_format("R'G'B'A u8"),
-     babl_format_with_space("RGBA float",    babl_space("ProPhoto")),
-     babl_format_with_space("R'G'B'A float", babl_space("ProPhoto")),
-     babl_format_with_space("Y float",       babl_space("ProPhoto")),
-     babl_format_with_space("R'G'B'A u8",     babl_space("Adobe")),
-     babl_format_with_space("R'G'B'A u8",     babl_space("ProPhoto")),
+     //babl_format("R'G'B'A u8"),
+     //babl_format("R'G'B'A u16"),
+       babl_format_with_space("R'G'B'A u8", babl_space("ProPhoto")),
+       babl_format_with_space("R'G'B'A half", babl_space("ProPhoto")),
+       babl_format_with_space("R'G'B'A float", babl_space("ProPhoto")),
+       babl_format_with_space("R'G'B'A double", babl_space("ProPhoto")),
+       babl_format_with_space("cairo-RGB24", babl_space("Adobe")),
+       babl_format_with_space("cairo-ARGB32", babl_space("Adobe")),
+
      };
   int n_formats = sizeof (formats) / sizeof (formats[0]);
   const Babl *fishes[50 * 50];


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]