Mesa (master): glsl: Support uint index in lower_vector_insert

Jordan Justen jljusten at kemper.freedesktop.org
Wed Oct 14 20:26:46 UTC 2015


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

Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Mon Oct 12 20:28:28 2015 -0700

glsl: Support uint index in lower_vector_insert

The ES31-CTS.compute_shader.pipeline-compute-chain test case generates
an unsigned index by using gl_LocalInvocationID.x and
gl_LocalInvocationID.y as array indices.

Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
Reviewed-by: Tapani Pälli <tapani.palli at intel.com>

---

 src/glsl/lower_vector_insert.cpp |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/glsl/lower_vector_insert.cpp b/src/glsl/lower_vector_insert.cpp
index 6d7cfa9..26d31b0 100644
--- a/src/glsl/lower_vector_insert.cpp
+++ b/src/glsl/lower_vector_insert.cpp
@@ -108,9 +108,13 @@ vector_insert_visitor::handle_rvalue(ir_rvalue **rv)
       factory.emit(assign(temp, expr->operands[0]));
       factory.emit(assign(src_temp, expr->operands[1]));
 
+      assert(expr->operands[2]->type == glsl_type::int_type ||
+             expr->operands[2]->type == glsl_type::uint_type);
+
       for (unsigned i = 0; i < expr->type->vector_elements; i++) {
          ir_constant *const cmp_index =
-            new(factory.mem_ctx) ir_constant(int(i));
+            ir_constant::zero(factory.mem_ctx, expr->operands[2]->type);
+         cmp_index->value.u[0] = i;
 
          ir_variable *const cmp_result =
             factory.make_temp(glsl_type::bool_type, "index_condition");




More information about the mesa-commit mailing list