From 86ed05b0f93505c136fb279fa4529596fc7c682a Mon Sep 17 00:00:00 2001 From: Aaron Plattner Date: Wed, 23 Apr 2008 17:30:14 -0700 Subject: [PATCH] Use wide compositing functions when wide == 1. Signed-off-by: Soren Sandmann Pedersen --- pixman/pixman-compose.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/pixman/pixman-compose.c b/pixman/pixman-compose.c index 7daa45b..616fbc4 100644 --- a/pixman/pixman-compose.c +++ b/pixman/pixman-compose.c @@ -281,7 +281,9 @@ PIXMAN_COMPOSITE_RECT_GENERAL (const FbComposeData *data, data->mask->common.component_alpha && PIXMAN_FORMAT_RGB (data->mask->bits.format)) { - CombineFuncC32 compose = pixman_composeFunctions.combineC[data->op]; + CombineFuncC32 compose = + wide ? (CombineFuncC32)pixman_composeFunctions64.combineC[data->op] : + pixman_composeFunctions.combineC[data->op]; if (!compose) return; @@ -346,7 +348,9 @@ PIXMAN_COMPOSITE_RECT_GENERAL (const FbComposeData *data, { void *src_mask_buffer = 0; const int useMask = (fetchMask != NULL); - CombineFuncU32 compose = pixman_composeFunctions.combineU[data->op]; + CombineFuncU32 compose = + wide ? (CombineFuncU32)pixman_composeFunctions64.combineU[data->op] : + pixman_composeFunctions.combineU[data->op]; if (!compose) return; @@ -372,7 +376,11 @@ PIXMAN_COMPOSITE_RECT_GENERAL (const FbComposeData *data, if (useMask) { - pixman_composeFunctions.combineU[PIXMAN_OP_IN] (mask_buffer, src_buffer, data->width); + if (wide) + pixman_composeFunctions64.combineU[PIXMAN_OP_IN] (mask_buffer, src_buffer, data->width); + else + pixman_composeFunctions.combineU[PIXMAN_OP_IN] (mask_buffer, src_buffer, data->width); + src_mask_buffer = mask_buffer; } else @@ -386,10 +394,16 @@ PIXMAN_COMPOSITE_RECT_GENERAL (const FbComposeData *data, data->width, src_buffer, useMask ? mask_buffer : NULL, 0xff000000); - if (useMask) - pixman_composeFunctions.combineMaskU (src_buffer, - mask_buffer, - data->width); + if (useMask) { + if (wide) + pixman_composeFunctions64.combineMaskU (src_buffer, + mask_buffer, + data->width); + else + pixman_composeFunctions.combineMaskU (src_buffer, + mask_buffer, + data->width); + } src_mask_buffer = src_buffer; } @@ -399,7 +413,10 @@ PIXMAN_COMPOSITE_RECT_GENERAL (const FbComposeData *data, fetchMask (data->mask, data->xMask, data->yMask + i, data->width, mask_buffer, 0, 0); - pixman_composeFunctions.combineU[PIXMAN_OP_IN] (mask_buffer, src_buffer, data->width); + if (wide) + pixman_composeFunctions64.combineU[PIXMAN_OP_IN] (mask_buffer, src_buffer, data->width); + else + pixman_composeFunctions.combineU[PIXMAN_OP_IN] (mask_buffer, src_buffer, data->width); src_mask_buffer = mask_buffer; } -- 2.7.4