f2i results in an int/ivec; we need i2u to get a uint/uvec.
Signed-off-by: Kenneth Graunke <[email protected]>
---
src/glsl/lower_instructions.cpp | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/glsl/lower_instructions.cpp b/src/glsl/lower_instructions.cpp
index a5f61f2..94b8c4a 100644
--- a/src/glsl/lower_instructions.cpp
+++ b/src/glsl/lower_instructions.cpp
@@ -168,8 +168,13 @@ lower_instructions_visitor::div_to_mul_rcp(ir_expression
*ir)
op0 = new(ir) ir_expression(ir_binop_mul, vec_type, op0, op1);
- ir->operation = ir_unop_f2i;
- ir->operands[0] = op0;
+ if (ir->operands[1]->type->base_type == GLSL_TYPE_INT) {
+ ir->operation = ir_unop_f2i;
+ ir->operands[0] = op0;
+ } else {
+ ir->operation = ir_unop_i2u;
+ ir->operands[0] = new(ir) ir_expression(ir_unop_f2i, op0);
+ }
ir->operands[1] = NULL;
}
--
1.7.5.4
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev