mesa: fix DIFFERENT_SIGNS() function
authorBrian Paul <brianp@vmware.com>
Tue, 4 Sep 2012 16:02:20 +0000 (10:02 -0600)
committerBrian Paul <brianp@vmware.com>
Tue, 4 Sep 2012 17:36:58 +0000 (11:36 -0600)
Looks like converting this to a macro, returning bool, caused us to
lose the high (31st) bit result.  Fixes piglit fbo-1d test.  Strange
that none of the other tests I ran caught this.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=54365

Tested-by: Vinson Lee <vlee@freedesktop.org>
src/mesa/main/macros.h

index fc6f2a28f206808b4083bcdf261b226df0d675cb..04d59d79c0788183383a11d1f20633b31a4738fd 100644 (file)
@@ -711,7 +711,7 @@ DIFFERENT_SIGNS(GLfloat x, GLfloat y)
    fi_type xfi, yfi;
    xfi.f = x;
    yfi.f = y;
-   return (xfi.i ^ yfi.i) & (1u << 31);
+   return !!((xfi.i ^ yfi.i) & (1u << 31));
 #else
    /* Could just use (x*y<0) except for the flatshading requirements.
     * Maybe there's a better way?