From: Søren Sandmann Pedersen Date: Fri, 7 Aug 2009 15:38:03 +0000 (-0400) Subject: Fix vmx_over_reverse_ca() X-Git-Tag: 1.0_branch~798^2~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7e58323385e442fb2cea207780db5e30be88be96;p=profile%2Fivi%2Fpixman.git Fix vmx_over_reverse_ca() Destination alpha must be extracted after inversing, otherwise we end up with 0xFFs in the rgb channels. --- diff --git a/pixman/pixman-vmx.c b/pixman/pixman-vmx.c index 018653e..6ad2017 100644 --- a/pixman/pixman-vmx.c +++ b/pixman/pixman-vmx.c @@ -1221,26 +1221,25 @@ vmx_combine_over_reverse_ca (pixman_implementation_t *imp, /* printf("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSC (dest, src, mask); - + vdest = over (vdest, splat_alpha (vdest), pix_multiply (vsrc, vmask)); - + STORE_VECTOR (dest); - + mask += 4; src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t a = mask[i]; uint32_t s = src[i]; uint32_t d = dest[i]; - uint32_t da = ALPHA_8 (d); + uint32_t ida = ALPHA_8 (~d); UN8x4_MUL_UN8x4 (s, a); - UN8x4_MUL_UN8x4_ADD_UN8x4 (s, ~da, d); + UN8x4_MUL_UN8x4_ADD_UN8x4 (s, ida, d); dest[i] = s; } }