From: Timothy Arceri Date: Thu, 23 Jan 2014 12:21:02 +0000 (+1100) Subject: glsl: create type name for arrays of arrays X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=61a584609936940f69207dd520b5b4208810a9e7;p=mesa.git glsl: create type name for arrays of arrays We need to insert outermost dimensions in the correct spot otherwise the dimension order will be backwards Signed-off-by: Timothy Arceri Reviewed-by: Paul Berry --- diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp index f9bb0cfc754..1b0b3ef883d 100644 --- a/src/glsl/glsl_types.cpp +++ b/src/glsl/glsl_types.cpp @@ -300,8 +300,20 @@ 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 + * otherwise the dimension order will be backwards + */ + 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 - idx, "[%u]%s", + length, array->name + idx); + } else { + snprintf(n, name_length, "%s[%u]", array->name, length); + } + } this->name = n; }