pixman: Branch 'master' - 2 commits

Søren Sandmann Pedersen sandmann at kemper.freedesktop.org
Wed Aug 29 12:08:50 PDT 2012


 test/utils.c |   32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

New commits:
commit 1e3e569b04f45592ce2174e48df0fcb333ce0ad3
Author: Søren Sandmann Pedersen <ssp at redhat.com>
Date:   Sun Aug 26 18:23:53 2012 -0400

    test/utils.c: Use pow(), not powf() in sRGB conversion routines
    
    These functions are operating on double precision values, so use pow()
    instead of powf().

diff --git a/test/utils.c b/test/utils.c
index df16ef5..c922ae5 100644
--- a/test/utils.c
+++ b/test/utils.c
@@ -772,7 +772,7 @@ convert_srgb_to_linear (double c)
     if (c <= 0.04045)
         return c / 12.92;
     else
-        return powf ((c + 0.055) / 1.055, 2.4);
+        return pow ((c + 0.055) / 1.055, 2.4);
 }
 
 double
@@ -781,7 +781,7 @@ convert_linear_to_srgb (double c)
     if (c <= 0.0031308)
         return c * 12.92;
     else
-        return 1.055 * powf (c, 1.0/2.4) - 0.055;
+        return 1.055 * pow (c, 1.0/2.4) - 0.055;
 }
 
 void
commit 8577daba04e60c1b4c44ce01c6874a573952913a
Author: Søren Sandmann Pedersen <ssp at redhat.com>
Date:   Sun Aug 26 18:13:47 2012 -0400

    pixel_checker: Move sRGB conversion into get_limits()
    
    The sRGB conversion has to be done every time the limits are being
    computed. Without this fix, pixel_checker_get_min/max() will produce
    the wrong results when called from somewhere other than
    pixel_checker_check().

diff --git a/test/utils.c b/test/utils.c
index 85b58d0..df16ef5 100644
--- a/test/utils.c
+++ b/test/utils.c
@@ -962,6 +962,18 @@ get_limits (const pixel_checker_t *checker, double limit,
 	    color_t *color,
 	    int *ao, int *ro, int *go, int *bo)
 {
+    color_t tmp;
+
+    if (PIXMAN_FORMAT_TYPE (checker->format) == PIXMAN_TYPE_ARGB_SRGB)
+    {
+	tmp.a = color->a;
+	tmp.r = convert_linear_to_srgb (color->r);
+	tmp.g = convert_linear_to_srgb (color->g);
+	tmp.b = convert_linear_to_srgb (color->b);
+
+	color = &tmp;
+    }
+    
     *ao = convert (color->a + limit, checker->aw, checker->am, checker->as, 1.0);
     *ro = convert (color->r + limit, checker->rw, checker->rm, checker->rs, 0.0);
     *go = convert (color->g + limit, checker->gw, checker->gm, checker->gs, 0.0);
@@ -988,25 +1000,11 @@ pixel_checker_get_min (const pixel_checker_t *checker, color_t *color,
 
 pixman_bool_t
 pixel_checker_check (const pixel_checker_t *checker, uint32_t pixel,
-		     color_t *color_in)
+		     color_t *color)
 {
     int32_t a_lo, a_hi, r_lo, r_hi, g_lo, g_hi, b_lo, b_hi;
     int32_t ai, ri, gi, bi;
     pixman_bool_t result;
-    color_t tmp, *color;
-
-    if (PIXMAN_FORMAT_TYPE (checker->format) == PIXMAN_TYPE_ARGB_SRGB)
-    {
-	tmp.a = color_in->a;
-	tmp.r = convert_linear_to_srgb (color_in->r);
-	tmp.g = convert_linear_to_srgb (color_in->g);
-	tmp.b = convert_linear_to_srgb (color_in->b);
-	color = &tmp;
-    }
-    else
-    {
-	color = color_in;
-    }
 
     pixel_checker_get_min (checker, color, &a_lo, &r_lo, &g_lo, &b_lo);
     pixel_checker_get_max (checker, color, &a_hi, &r_hi, &g_hi, &b_hi);


More information about the xorg-commit mailing list