glsl: Strip arrayness from ir_type_dereference_variable too
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 10 Sep 2014 22:19:43 +0000 (15:19 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Fri, 26 Sep 2014 14:59:53 +0000 (07:59 -0700)
If the thing being dereferenced is a record or an array of records, it
should be treated as row-major.  The ir_type_derference_record path
already does this, and I think I intended to do the same for this path
in b17a4d5d.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83741
Cc: mesa-stable@lists.freedesktop.org
src/glsl/lower_ubo_reference.cpp

index f3920b362ce3ce5e16609df6904843d57632ead6..43dd067fa8af8f5faedf2e1db84762b48d15099c 100644 (file)
@@ -111,7 +111,7 @@ is_dereferenced_thing_row_major(const ir_dereference *deref)
          case GLSL_MATRIX_LAYOUT_COLUMN_MAJOR:
             return false;
          case GLSL_MATRIX_LAYOUT_ROW_MAJOR:
-            return matrix || deref->type->is_record();
+            return matrix || deref->type->without_array()->is_record();
          }
 
          unreachable("invalid matrix layout");