[Mesa-dev] [PATCH V2 7/8] glsl: create type name for arrays of arrays

Timothy Arceri t_arceri at yahoo.com.au
Tue Jan 21 04:19:52 PST 2014


We need to insert outermost dimensions in the correct spot otherwise
the dimension order will be backwards

Signed-off-by: Timothy Arceri <t_arceri at yahoo.com.au>
---
 src/glsl/glsl_types.cpp | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp
index 12d4ac0..f7f3117 100644
--- a/src/glsl/glsl_types.cpp
+++ b/src/glsl/glsl_types.cpp
@@ -300,8 +300,18 @@ glsl_type::glsl_type(const glsl_type *array, unsigned length) :
 
    if (length == 0)
       snprintf(n, name_length, "%s[]", array->name);
-   else
-      snprintf(n, name_length, "%s[%u]", array->name, length);
+   else {
+      /* insert outermost dimensions in the correct spot */
+      const char *pos = strchr(array->name, '[');
+      if (pos) {
+         int idx = pos - array->name;
+         snprintf(n, idx+1, "%s", array->name);
+         snprintf(n + idx, name_length, "[%u]", length);
+         snprintf(n + strlen(n), name_length, "%s", array->name + idx);
+      } else {
+         snprintf(n, name_length, "%s[%u]", array->name, length);
+      }
+   }
 
    this->name = n;
 }
-- 
1.8.3.1



More information about the mesa-dev mailing list