From 10ab592d57bbeefb3e3297c4a905e5cec233a006 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 27 Nov 2009 22:02:54 +0100 Subject: [PATCH] Fix bug that prevented pixman_fill MMX and SSE paths for 16 and 8bpp --- pixman/pixman-mmx.c | 12 ++---------- pixman/pixman-sse2.c | 4 +--- 2 files changed, 3 insertions(+), 13 deletions(-) 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 { -- 2.7.4