From 37572455866114cbb8bb1bf3acfb1c61d200f98c Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=B8ren=20Sandmann=20Pedersen?= Date: Tue, 20 Dec 2011 06:32:26 -0500 Subject: [PATCH] Fix rounding for DIV_UNc() We need to compute floor (a/b * 255 + 0.5), not floor (a / b * 255), so add b/2 to the numerator in the DIV_UNc() macro. --- pixman/pixman-combine.h.template | 2 +- test/blitters-test.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pixman/pixman-combine.h.template b/pixman/pixman-combine.h.template index 53afcd2..20f784b 100644 --- a/pixman/pixman-combine.h.template +++ b/pixman/pixman-combine.h.template @@ -28,7 +28,7 @@ ((t) = (a) * (comp2_t)(b) + ONE_HALF, ((((t) >> G_SHIFT ) + (t) ) >> G_SHIFT )) #define DIV_UNc(a, b) \ - (((comp2_t) (a) * MASK) / (b)) + (((comp2_t) (a) * MASK + ((b) / 2)) / (b)) #define ADD_UNc(x, y, t) \ ((t) = (x) + (y), \ diff --git a/test/blitters-test.c b/test/blitters-test.c index fd62c67..feea308 100644 --- a/test/blitters-test.c +++ b/test/blitters-test.c @@ -424,6 +424,6 @@ main (int argc, const char *argv[]) } return fuzzer_test_main("blitters", 2000000, - 0x3EDA4108, + 0xA364B5BF, test_composite, argc, argv); } -- 2.7.4