Mesa (master): glsl: Don't use MOD_TO_FRACT lowering on GLSL 1.30' s % operator.

Kenneth Graunke kwg at kemper.freedesktop.org
Wed Jun 29 23:07:31 UTC 2011


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

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Jun 14 23:13:27 2011 -0700

glsl: Don't use MOD_TO_FRACT lowering on GLSL 1.30's % operator.

MOD_TO_FRACT was designed to lower the GLSL 1.20 mod() function, which
operates on floating point values.  However, we also use ir_binop_mod
for GLSL 1.30's % operator, which operates on integers.

For now, make MOD_TO_FRACT only apply to floating-point mod operations.
In the future, we may want to add a lowering pass for integer-based mod.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Eric Anholt <eric at anholt.net>

---

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

diff --git a/src/glsl/lower_instructions.cpp b/src/glsl/lower_instructions.cpp
index 94b8c4a..806f863 100644
--- a/src/glsl/lower_instructions.cpp
+++ b/src/glsl/lower_instructions.cpp
@@ -276,7 +276,7 @@ lower_instructions_visitor::visit_leave(ir_expression *ir)
       break;
 
    case ir_binop_mod:
-      if (lowering(MOD_TO_FRACT))
+      if (lowering(MOD_TO_FRACT) && ir->type->is_float())
 	 mod_to_fract(ir);
       break;
 




More information about the mesa-commit mailing list