<p>Reviewed-by: Christoph Brill <<a href="mailto:egore911@gmail.com">egore911@gmail.com</a>></p>
<div class="gmail_quote">Am 25.06.2014 04:15 schrieb "Ian Romanick" <<a href="mailto:idr@freedesktop.org">idr@freedesktop.org</a>>:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
From: Ian Romanick <<a href="mailto:ian.d.romanick@intel.com">ian.d.romanick@intel.com</a>><br>
<br>
Mesa has an optimization that converts expressions like "v.x + v.y + v.z<br>
+ v.w" into dot(v, 1.0).  And therein lies the rub: the other operand to<br>
the dot-product is always a float... even if the vector is an ivec or<br>
uvec.  This results in an assertion failure in ir_builder.<br>
<br>
If the base type of the operand is not float, don't try the<br>
optimization.  Dot-product is not valid on integer data.<br>
<br>
Fixes piglit vs-integer-reduction.shader_test and OpenGL ES conformance<br>
test ES2-CTS.gtf.GL2Tests.glGetUniform.glGetUniform.<br>
<br>
Signed-off-by: Ian Romanick <<a href="mailto:ian.d.romanick@intel.com">ian.d.romanick@intel.com</a>><br>
Cc: Matt Turner <<a href="mailto:mattst88@gmail.com">mattst88@gmail.com</a>><br>
---<br>
 src/glsl/opt_algebraic.cpp | 4 +++-<br>
 1 file changed, 3 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/glsl/opt_algebraic.cpp b/src/glsl/opt_algebraic.cpp<br>
index 448af6b..ac7514a 100644<br>
--- a/src/glsl/opt_algebraic.cpp<br>
+++ b/src/glsl/opt_algebraic.cpp<br>
@@ -124,7 +124,9 @@ static ir_expression *<br>
 try_replace_with_dot(ir_expression *expr0, ir_expression *expr1, void *mem_ctx)<br>
 {<br>
    if (expr0 && expr0->operation == ir_binop_add &&<br>
-       expr1 && expr1->operation == ir_binop_add) {<br>
+       expr0->type->is_float() &&<br>
+       expr1 && expr1->operation == ir_binop_add &&<br>
+       expr1->type->is_float()) {<br>
       ir_swizzle *x = expr0->operands[0]->as_swizzle();<br>
       ir_swizzle *y = expr0->operands[1]->as_swizzle();<br>
       ir_swizzle *z = expr1->operands[0]->as_swizzle();<br>
--<br>
1.8.1.4<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
<br>
</blockquote></div>