summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2008-12-11 19:34:43 -0700
committerBrian Paul <[email protected]>2008-12-11 19:34:43 -0700
commit1737f2dbdd8d9d6b1da140340323cbf83f7bd592 (patch)
tree877d8f57ef71b7d0cdc975490e210e7ad5ba7878
parent2760bca1e13e62943affd762ed560bc30fbcc27a (diff)
mesa: consolidate variable declaration initializer code for globals too
-rw-r--r--src/mesa/shader/slang/slang_codegen.c22
1 files changed, 3 insertions, 19 deletions
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index 07928c68a0e..7e32c1ac2fe 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -2576,6 +2576,7 @@ _slang_gen_var_decl(slang_assemble_ctx *A, slang_variable *var,
#endif
}
+ /* constant-folding, etc here */
_slang_simplify(initializer, &A->space, A->atoms);
init = _slang_gen_operation(A, initializer);
@@ -3941,26 +3942,9 @@ _slang_codegen_global_variable(slang_assemble_ctx *A, slang_variable *var,
slang_ir_node *n;
/* IR node to declare the variable */
- n = _slang_gen_var_decl(A, var, NULL);
-
- /* IR code for the var's initializer, if present */
- if (var->initializer) {
- slang_ir_node *lhs, *rhs, *init;
-
- /* Generate IR_COPY instruction to initialize the variable */
- lhs = new_node0(IR_VAR);
- lhs->Var = var;
- lhs->Store = n->Store;
-
- /* constant folding, etc */
- _slang_simplify(var->initializer, &A->space, A->atoms);
-
- rhs = _slang_gen_operation(A, var->initializer);
- assert(rhs);
- init = new_node2(IR_COPY, lhs, rhs);
- n = new_seq(n, init);
- }
+ n = _slang_gen_var_decl(A, var, var->initializer);
+ /* emit GPU instructions */
success = _slang_emit_code(n, A->vartable, A->program, GL_FALSE, A->log);
_slang_free_ir_tree(n);