Mesa (master): gallivm: Fix lp_build_const_xxx for negative integers.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Tue May 15 21:37:12 UTC 2012


Module: Mesa
Branch: master
Commit: c95cea50a9e14255a60c37b156271b7ab50515e9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c95cea50a9e14255a60c37b156271b7ab50515e9

Author: José Fonseca <jose.r.fonseca at gmail.com>
Date:   Tue May 15 22:34:36 2012 +0100

gallivm: Fix lp_build_const_xxx for negative integers.

Do proper rounding.

Thanks to Olivier Galibert for investigating this.

---

 src/gallium/auxiliary/gallivm/lp_bld_const.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_const.c b/src/gallium/auxiliary/gallivm/lp_bld_const.c
index f0611b1..59e8fb2 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_const.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_const.c
@@ -36,6 +36,7 @@
 #include <float.h>
 
 #include "util/u_debug.h"
+#include "util/u_math.h"
 
 #include "lp_bld_type.h"
 #include "lp_bld_const.h"
@@ -297,7 +298,7 @@ lp_build_const_elem(struct gallivm_state *gallivm,
    else {
       double dscale = lp_const_scale(type);
 
-      elem = LLVMConstInt(elem_type, val*dscale + 0.5, 0);
+      elem = LLVMConstInt(elem_type, round(val*dscale), 0);
    }
 
    return elem;
@@ -372,10 +373,10 @@ lp_build_const_aos(struct gallivm_state *gallivm,
    else {
       double dscale = lp_const_scale(type);
 
-      elems[swizzle[0]] = LLVMConstInt(elem_type, r*dscale + 0.5, 0);
-      elems[swizzle[1]] = LLVMConstInt(elem_type, g*dscale + 0.5, 0);
-      elems[swizzle[2]] = LLVMConstInt(elem_type, b*dscale + 0.5, 0);
-      elems[swizzle[3]] = LLVMConstInt(elem_type, a*dscale + 0.5, 0);
+      elems[swizzle[0]] = LLVMConstInt(elem_type, round(r*dscale), 0);
+      elems[swizzle[1]] = LLVMConstInt(elem_type, round(g*dscale), 0);
+      elems[swizzle[2]] = LLVMConstInt(elem_type, round(b*dscale), 0);
+      elems[swizzle[3]] = LLVMConstInt(elem_type, round(a*dscale), 0);
    }
 
    for(i = 4; i < type.length; ++i)




More information about the mesa-commit mailing list