From: Nicolai Hähnle <[email protected]>

Don't get distracted by record dereferences between array references.

Fixes dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.*

Cc: [email protected]
---
 src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 026aea5d53d..cf6e8f8fde1 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -2525,21 +2525,21 @@ glsl_to_tgsi_visitor::visit(ir_dereference_array *ir)
     */
    int element_size = ir->type->without_array()->is_record() ?
       st_glsl_storage_type_size(ir->type, var->data.bindless) :
       type_size(ir->type);
 
    index = ir->array_index->constant_expression_value(ralloc_parent(ir));
 
    ir->array->accept(this);
    src = this->result;
 
-   if (ir->array->ir_type != ir_type_dereference_array) {
+   if (!src.has_index2) {
       switch (this->prog->Target) {
       case GL_TESS_CONTROL_PROGRAM_NV:
          is_2D = (src.file == PROGRAM_INPUT || src.file == PROGRAM_OUTPUT) &&
                  !ir->variable_referenced()->data.patch;
          break;
       case GL_TESS_EVALUATION_PROGRAM_NV:
          is_2D = src.file == PROGRAM_INPUT &&
                  !ir->variable_referenced()->data.patch;
          break;
       case GL_GEOMETRY_PROGRAM_NV:
-- 
2.11.0

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to