Mesa (glsl2): ir_constant_expression: Fix broken code for floating point modulus.

Kenneth Graunke kwg at kemper.freedesktop.org
Fri Jul 23 00:43:45 UTC 2010


Module: Mesa
Branch: glsl2
Commit: 3e882ec84a2493da74c55d105010a37de521e593
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3e882ec84a2493da74c55d105010a37de521e593

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Jul 22 17:44:34 2010 -0700

ir_constant_expression: Fix broken code for floating point modulus.

It's supposed to be x - y * floor(x/y), not (x - y) * floor(x/y).

---

 src/glsl/ir_constant_expression.cpp |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp
index 5bef17c..f15530a 100644
--- a/src/glsl/ir_constant_expression.cpp
+++ b/src/glsl/ir_constant_expression.cpp
@@ -533,7 +533,7 @@ ir_expression::constant_expression_value()
 	    /* We don't use fmod because it rounds toward zero; GLSL specifies
 	     * the use of floor.
 	     */
-	    data.f[c] = (op[0]->value.f[c0] - op[1]->value.f[c1])
+	    data.f[c] = op[0]->value.f[c0] - op[1]->value.f[c1]
 	       * floorf(op[0]->value.f[c0] / op[1]->value.f[c1]);
 	    break;
 	 default:




More information about the mesa-commit mailing list