summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Paalanen <pekka.paalanen@collabora.co.uk>2015-04-14 11:42:00 +0300
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2015-04-20 16:18:18 +0300
commit58e21d3e45c5227c2ca9ac00cf044f22a7975180 (patch)
tree80833a37dc0762bf0b55e2d61c055c797372a66c
parentbe49f929b656ef83420072e82658e3b3a96a9277 (diff)
lowlevel-blt-bench: use a8r8g8b8 for CA solid masks
When doing component alpha with a solid mask, use a mask format that has all the color channels instead of just a8. As Ben Avison explains it: "Lowlevel-blt-bench initialises all its images using memset(0xCC) so an a8 solid image would be converted by _pixman_image_get_solid() to 0xCC000000 whereas an a8r8g8b8 would be 0xCCCCCCCC. When you're not in component alpha mode, only the alpha byte matters for the mask image, but in the case of component alpha operations, a fast path might decide that it can save itself a lot of multiplications if it spots that 3 constant mask components are already 0." No (default) test so far has a solid mask with CA. This is just future-proofing lowlevel-blt-bench to do what one would expect. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Ben Avison <bavison@riscosopen.org>
-rw-r--r--test/lowlevel-blt-bench.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/test/lowlevel-blt-bench.c b/test/lowlevel-blt-bench.c
index 9d80d21..aff4608 100644
--- a/test/lowlevel-blt-bench.c
+++ b/test/lowlevel-blt-bench.c
@@ -868,7 +868,11 @@ parse_test_pattern (test_entry_t *test, const char *pattern)
if (test->mask_fmt == PIXMAN_solid)
{
- test->mask_fmt = PIXMAN_a8;
+ if (test->mask_flags & CA_FLAG)
+ test->mask_fmt = PIXMAN_a8r8g8b8;
+ else
+ test->mask_fmt = PIXMAN_a8;
+
test->mask_flags |= SOLID_FLAG;
}