Mesa (master): glsl: calculate component size for arrays of arrays when varying packing disabled

Timothy Arceri tarceri at kemper.freedesktop.org
Sat Sep 26 12:48:58 UTC 2015


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

Author: Timothy Arceri <t_arceri at yahoo.com.au>
Date:   Sun May  4 21:13:25 2014 +1000

glsl: calculate component size for arrays of arrays when varying packing disabled

Signed-off-by: Timothy Arceri <t_arceri at yahoo.com.au>
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

 src/glsl/link_varyings.cpp |   13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/glsl/link_varyings.cpp b/src/glsl/link_varyings.cpp
index f7a7b8c..0d343d6 100644
--- a/src/glsl/link_varyings.cpp
+++ b/src/glsl/link_varyings.cpp
@@ -956,9 +956,16 @@ varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var)
          type = type->fields.array;
       }
 
-      slots = (type->is_array()
-            ? (type->length * type->fields.array->matrix_columns)
-            : type->matrix_columns);
+      if (type->is_array()) {
+         slots = 1;
+         while (type->is_array()) {
+            slots *= type->length;
+            type = type->fields.array;
+         }
+         slots *= type->matrix_columns;
+      } else {
+         slots = var->type->matrix_columns;
+      }
       this->matches[this->num_matches].num_components = 4 * slots;
    } else {
       this->matches[this->num_matches].num_components




More information about the mesa-commit mailing list