pixman: Branch 'master' - 2 commits

Benjamin Otte company at kemper.freedesktop.org
Fri Dec 4 06:05:50 PST 2009


 configure.ac         |    2 +-
 pixman/pixman-mmx.c  |   12 ++----------
 pixman/pixman-sse2.c |    4 +---
 3 files changed, 4 insertions(+), 14 deletions(-)

New commits:
commit 3fba7dc6fa52bbf01cfc5c4aab1ab06d49a117b2
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 28 11:38:43 2009 +0100

    Make test program not throw warnings about undefined variables

diff --git a/configure.ac b/configure.ac
index a61bc1a..a2eaecb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -253,7 +253,7 @@ AC_COMPILE_IFELSE([
 #include <xmmintrin.h>
 #include <emmintrin.h>
 int main () {
-    __m128i a, b, c;
+    __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
 	c = _mm_xor_si128 (a, b);
     return 0;
 }], have_sse2_intrinsics=yes)
commit 10ab592d57bbeefb3e3297c4a905e5cec233a006
Author: Benjamin Otte <otte at gnome.org>
Date:   Fri Nov 27 22:02:54 2009 +0100

    Fix bug that prevented pixman_fill MMX and SSE paths for 16 and 8bpp

diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index 819e3a0..007fda7 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -1883,22 +1883,13 @@ pixman_fill_mmx (uint32_t *bits,
     if (bpp != 16 && bpp != 32 && bpp != 8)
 	return FALSE;
 
-    if (bpp == 16 && (xor >> 16 != (xor & 0xffff)))
-	return FALSE;
-
-    if (bpp == 8 &&
-        ((xor >> 16 != (xor & 0xffff)) ||
-         (xor >> 24 != (xor & 0x00ff) >> 16)))
-    {
-	return FALSE;
-    }
-
     if (bpp == 8)
     {
 	stride = stride * (int) sizeof (uint32_t) / 1;
 	byte_line = (uint8_t *)(((uint8_t *)bits) + stride * y + x);
 	byte_width = width;
 	stride *= 1;
+        xor = (xor & 0xff) * 0x01010101;
     }
     else if (bpp == 16)
     {
@@ -1906,6 +1897,7 @@ pixman_fill_mmx (uint32_t *bits,
 	byte_line = (uint8_t *)(((uint16_t *)bits) + stride * y + x);
 	byte_width = 2 * width;
 	stride *= 2;
+        xor = (xor & 0xffff) * 0x00010001;
     }
     else
     {
diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
index 78b0ad1..1f8aa6e 100644
--- a/pixman/pixman-sse2.c
+++ b/pixman/pixman-sse2.c
@@ -3981,9 +3981,6 @@ pixman_fill_sse2 (uint32_t *bits,
 
     __m128i xmm_def;
 
-    if (bpp == 16 && (data >> 16 != (data & 0xffff)))
-	return FALSE;
-
     if (bpp != 16 && bpp != 32)
 	return FALSE;
 
@@ -3993,6 +3990,7 @@ pixman_fill_sse2 (uint32_t *bits,
 	byte_line = (uint8_t *)(((uint16_t *)bits) + stride * y + x);
 	byte_width = 2 * width;
 	stride *= 2;
+        data = (data & 0xffff) * 0x00010001;
     }
     else
     {


More information about the xorg-commit mailing list