mesa: fix some more GLSL 1.20 array things.
[mesa.git] / src / mesa / shader / slang / slang_codegen.c
index 3f31f956fa550b6a3d004513795ff3d6e3e5b19a..38f6713aff9f5c7a5988948f27bc9a5c20ef54aa 100644 (file)
@@ -67,9 +67,9 @@ _slang_gen_operation(slang_assemble_ctx * A, slang_operation *oper);
  * Returns GL_FALSE otherwise.
  */
 static GLboolean
-typeof_operation(const struct slang_assemble_ctx_ * A,
-                        slang_operation * op,
-                        slang_typeinfo * ti)
+typeof_operation(const struct slang_assemble_ctx_ *A,
+                 slang_operation *op,
+                 slang_typeinfo *ti)
 {
    return _slang_typeof_operation(op, &A->space, ti, A->atoms, A->log);
 }
@@ -2559,6 +2559,14 @@ _slang_gen_var_decl(slang_assemble_ctx *A, slang_variable *var,
           (void *) store, store->Index, store->Size);
 #endif
 
+   if (var->type.array_len > 0) {
+      /* the type is an array, ex: float[4] x; */
+      GLint sz = (store->Size + 3) & ~3;
+      /* total size = element size * array length */
+      sz *= var->type.array_len;
+      store->Size = sz;
+   }
+
    if (var->array_len > 0) {
       /* this is an array */
       /* round up the element size to a multiple of 4 */