mesa: fix array storage allocation bug
[mesa.git] / src / mesa / shader / slang / slang_codegen.c
index 4846c257f16f755149f5393e0c8dbdbb3db7fa40..14fa38c3cdabba8b8dedf5313fd1d2a55545c9f9 100644 (file)
@@ -2071,6 +2071,14 @@ _slang_gen_var_decl(slang_assemble_ctx *A, slang_variable *var)
 
       n->Store->File = PROGRAM_TEMPORARY;
       n->Store->Size = _slang_sizeof_type_specifier(&n->Var->type.specifier);
+      if (var->array_len > 0) {
+         /* this is an array */
+         /* round up element size to mult of 4 */
+         GLint sz = (n->Store->Size + 3) & ~3;
+         /* mult by array size */
+         sz *= var->array_len;
+         n->Store->Size = sz;
+      }
       A->program->NumTemporaries++;
       assert(n->Store->Size > 0);
    }