[Mesa-dev] [PATCH 23/26] glsl: add helper for comparing arrays in varying packing pass

Timothy Arceri timothy.arceri at collabora.com
Mon Feb 29 01:18:03 UTC 2016


---
 src/compiler/glsl/lower_packed_varyings.cpp | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/src/compiler/glsl/lower_packed_varyings.cpp b/src/compiler/glsl/lower_packed_varyings.cpp
index 10f2c22..5b2338d 100644
--- a/src/compiler/glsl/lower_packed_varyings.cpp
+++ b/src/compiler/glsl/lower_packed_varyings.cpp
@@ -152,6 +152,31 @@
 
 using namespace ir_builder;
 
+/**
+ * If the var is an array check if it matches the array attributes of the
+ * packed var.
+ */
+static bool
+check_for_matching_arrays(ir_variable *packed_var, ir_variable *var)
+{
+   const glsl_type *pt = packed_var->type;
+   const glsl_type *vt = var->type;
+   bool array_match = true;
+
+   while (pt->is_array() || vt->is_array()) {
+      if (pt->is_array() != vt->is_array() ||
+          pt->length != vt->length) {
+         array_match = false;
+         break;
+      } else {
+         pt = pt->fields.array;
+         vt = vt->fields.array;
+      }
+   }
+
+   return array_match;
+}
+
 static bool
 needs_lowering(ir_variable *var, bool has_enhanced_layouts,
                bool disable_varying_packing)
-- 
2.5.0



More information about the mesa-dev mailing list