From a652d5c15476cb60e1ca96ac115df625f8a1b76f Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=B8ren=20Sandmann=20Pedersen?= Date: Wed, 7 Apr 2010 19:34:41 -0400 Subject: [PATCH] [mmx] Fix mask creation bugs This line: mask = mask | mask >> 8 | mask >> 16 | mask >> 24; only works when mask has 0s in the lower 24 bits, so add mask &= 0xff000000; before. Reported by Todd Rinaldo on the #cairo IRC channel. --- pixman/pixman-mmx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c index e084e7f..d51b40c 100644 --- a/pixman/pixman-mmx.c +++ b/pixman/pixman-mmx.c @@ -1385,6 +1385,7 @@ mmx_composite_over_8888_n_8888 (pixman_implementation_t *imp, PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1); mask = _pixman_image_get_solid (mask_image, dst_image->bits.format); + mask &= 0xff000000; mask = mask | mask >> 8 | mask >> 16 | mask >> 24; vmask = load8888 (mask); srca = MC (4x00ff); @@ -1470,6 +1471,7 @@ mmx_composite_over_x888_n_8888 (pixman_implementation_t *imp, PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1); mask = _pixman_image_get_solid (mask_image, dst_image->bits.format); + mask &= 0xff000000; mask = mask | mask >> 8 | mask >> 16 | mask >> 24; vmask = load8888 (mask); srca = MC (4x00ff); -- 2.7.4