pixman: Branch 'master' - 4 commits

Søren Sandmann Pedersen sandmann at kemper.freedesktop.org
Mon Jul 13 04:13:25 PDT 2009


 pixman/pixman-bits-image.c |   18 +++++++++---------
 pixman/pixman.c            |    2 +-
 2 files changed, 10 insertions(+), 10 deletions(-)

New commits:
commit 7dc2c48bcab7404ace9b41959e2233d0025801b3
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date:   Mon Jul 13 05:58:43 2009 -0400

    Return immediately if the operator is CONJOINT_DST or DISJOINT_DST
    
    These are noops just like plain DST is.

diff --git a/pixman/pixman.c b/pixman/pixman.c
index 4c393c5..fed99ee 100644
--- a/pixman/pixman.c
+++ b/pixman/pixman.c
@@ -123,7 +123,7 @@ pixman_image_composite (pixman_op_t      op,
      * The output operator should be mathematically equivalent to the source.
      */
     op = pixman_optimize_operator(op, src, mask, dest);
-    if(op == PIXMAN_OP_DST)
+    if(op == PIXMAN_OP_DST || op == PIXMAN_OP_CONJOINT_DST || op == PIXMAN_OP_DISJOINT_DST)
         return;
 
     if (!imp)
commit bb383def00b3d30d991295274b58a841a7162620
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date:   Mon Jul 13 05:39:40 2009 -0400

    Fix bits_image_fetch_{un}transformed() for 64 bit buffers.
    
    The buffer pointer has to advance twice as far as in the 32 bit case.

diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index f4fbde4..6789eda 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -629,7 +629,7 @@ bits_image_fetch_untransformed_repeat_none (bits_image_t *image, pixman_bool_t w
 
     if (y < 0 || y >= image->height)
     {
-	memset (buffer, 0, width * sizeof (uint32_t));
+	memset (buffer, 0, width * (wide? 8 : 4));
 	return;
     }
 
@@ -640,7 +640,7 @@ bits_image_fetch_untransformed_repeat_none (bits_image_t *image, pixman_bool_t w
 	memset (buffer, 0, w * (wide? 8 : 4));
 	
 	width -= w;
-	buffer += w;
+	buffer += w * (wide? 2 : 1);
 	x += w;
     }
     
@@ -654,7 +654,7 @@ bits_image_fetch_untransformed_repeat_none (bits_image_t *image, pixman_bool_t w
 	    image->fetch_scanline_raw_32 ((pixman_image_t *)image, x, y, w, buffer, NULL, 0);
 	
 	width -= w;
-	buffer += w;
+	buffer += w * (wide? 2 : 1);
 	x += w;
     }
 
@@ -687,7 +687,7 @@ bits_image_fetch_untransformed_repeat_normal (bits_image_t *image, pixman_bool_t
 	else
 	    image->fetch_scanline_raw_32 ((pixman_image_t *)image, x, y, w, buffer, NULL, 0);
 	
-	buffer += w;
+	buffer += w * (wide? 2 : 1);
 	x += w;
 	width -= w;
     }
commit c88b75d24c6fc618d638373dce5e5f0281de1f40
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date:   Mon Jul 13 04:43:37 2009 -0400

    Make sure we get all 64 bits in bits_image_fetch_solid_64()
    
    Previously we would only store the first 32 bits.

diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index fc0dc84..f4fbde4 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -605,19 +605,19 @@ bits_image_fetch_solid_64 (pixman_image_t * image, int x, int y,
 			   int width, uint32_t *b,
 			   const uint32_t *unused, uint32_t unused2)
 {
-    uint32_t color[2];
-    uint32_t *coords = (uint32_t *)color;
+    uint64_t color;
+    uint32_t *coords = (uint32_t *)&color;
     uint64_t *buffer = (uint64_t *)b;
     uint64_t *end;
     
     coords[0] = 0;
     coords[1] = 0;
     
-    image->bits.fetch_pixels_raw_64 (&image->bits, color, 1);
+    image->bits.fetch_pixels_raw_64 (&image->bits, (uint32_t *)&color, 1);
     
     end = buffer + width;
     while (buffer < end)
-	*(buffer++) = color[0];
+	*(buffer++) = color;
 }
 
 static void
commit f73ecb3f0ff516e4411de9a2738b8851e679a163
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date:   Mon Jul 13 04:04:59 2009 -0400

    Fix typo in bits_image_fetch_solid_64().
    
    Found by blitters-test.

diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index 977b172..fc0dc84 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -611,7 +611,7 @@ bits_image_fetch_solid_64 (pixman_image_t * image, int x, int y,
     uint64_t *end;
     
     coords[0] = 0;
-    coords[1] = 1;
+    coords[1] = 0;
     
     image->bits.fetch_pixels_raw_64 (&image->bits, color, 1);
     


More information about the xorg-commit mailing list