diff options
author | Brian Paul <[email protected]> | 2008-07-03 13:05:28 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2008-07-03 13:05:28 -0600 |
commit | 6e46c121f9efc941473f797e0a388146a9599eea (patch) | |
tree | 6899c67116ab41284d5bf53c56c6f8b37df1b5ef /src | |
parent | 1dc20c7916e873dd154d62f885f849c87211c192 (diff) |
mesa: fix array storage allocation bug
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/shader/slang/slang_codegen.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c index 4846c257f16..14fa38c3cda 100644 --- a/src/mesa/shader/slang/slang_codegen.c +++ b/src/mesa/shader/slang/slang_codegen.c @@ -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); } |