Decide based on the image formats whether we need wide compositing.
authorAaron Plattner <aplattner@nvidia.com>
Sat, 7 Jun 2008 06:02:51 +0000 (23:02 -0700)
committerSøren Sandmann Pedersen <sandmann@redhat.com>
Fri, 13 Jun 2008 04:11:37 +0000 (00:11 -0400)
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
pixman/pixman-compose.c

index 812e70d..c583ea6 100644 (file)
@@ -549,7 +549,13 @@ void
 pixman_composite_rect_general (const FbComposeData *data)
 {
     uint32_t _scanline_buffer[SCANLINE_BUFFER_LENGTH * 3];
-    const int wide = 0;
+    const pixman_format_code_t srcFormat = data->src->type == BITS ? data->src->bits.format : 0;
+    const pixman_format_code_t maskFormat = data->mask && data->mask->type == BITS ? data->mask->bits.format : 0;
+    const pixman_format_code_t destFormat = data->dest->type == BITS ? data->dest->bits.format : 0;
+    const int srcWide = PIXMAN_FORMAT_16BPC(srcFormat);
+    const int maskWide = data->mask && PIXMAN_FORMAT_16BPC(maskFormat);
+    const int destWide = PIXMAN_FORMAT_16BPC(destFormat);
+    const int wide = srcWide || maskWide || destWide;
     const int Bpp = wide ? 8 : 4;
     uint8_t *scanline_buffer = (uint8_t*)_scanline_buffer;
     uint8_t *src_buffer, *mask_buffer, *dest_buffer;