[Piglit] [PATCH] teximage-colors: fix divide by zero issue
Brian Paul
brianp at vmware.com
Wed Sep 17 10:14:50 PDT 2014
Not exactly sure why, but the max = ~(~0ul << bits) assignment resulted
in max=0 when bits==32 with MinGW. This caused us to do a divide by zero
and many of the tests failed.
Special-case the 32-bit case and change the arithmetic to be a little
simpler (to me at least). Change sn_to_float() to be similar.
---
tests/texturing/teximage-colors.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/tests/texturing/teximage-colors.c b/tests/texturing/teximage-colors.c
index 815ef4d..b350b99 100644
--- a/tests/texturing/teximage-colors.c
+++ b/tests/texturing/teximage-colors.c
@@ -189,14 +189,21 @@ valid_combination(GLenum format, GLenum type)
static float
un_to_float(unsigned char bits, unsigned int color)
{
- unsigned int max = ~(~0ul << bits);
+ unsigned int max;
+ if (bits == 32) {
+ max = 0xffffffffU;
+ }
+ else {
+ assert(bits < 32);
+ max = (1 << bits) - 1;
+ }
return (float)color / (float)max;
}
static float
sn_to_float(unsigned char bits, int color)
{
- int max = ~(~0 << (bits-1));
+ int max = (1 << (bits - 1)) - 1;
if (color < -max)
color = -max;
return (float)color / (float)max;
--
1.7.10.4
More information about the Piglit
mailing list