diff options
author | Chris Forbes <[email protected]> | 2014-11-18 21:15:05 +1300 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2014-11-26 21:20:33 +0000 |
commit | 7e47ae318578994602be8d74f2bc365aec1fa896 (patch) | |
tree | 377868b7242930af7dd19d4afbb949af3eb2b755 /src | |
parent | 9e94c0593697f2d2c7231c13d1480293142430ce (diff) |
glsl: Generate unique names for each const array lowered to uniforms
Uniform names (even for hidden uniforms) are required to be unique; some
parts of the compiler assume they can be looked up by name.
Fixes the piglit test: tests/spec/glsl-1.20/linker/array-initializers-1
Signed-off-by: Chris Forbes <[email protected]>
Cc: "10.4" <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
(cherry picked from commit 129178893b2260df22db96327c5ca9c2ce7db046)
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/lower_const_arrays_to_uniforms.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/glsl/lower_const_arrays_to_uniforms.cpp b/src/glsl/lower_const_arrays_to_uniforms.cpp index b3c0ee29fba..700e9039f74 100644 --- a/src/glsl/lower_const_arrays_to_uniforms.cpp +++ b/src/glsl/lower_const_arrays_to_uniforms.cpp @@ -49,6 +49,7 @@ public: { instructions = insts; progress = false; + index = 0; } bool run() @@ -62,6 +63,7 @@ public: private: exec_list *instructions; bool progress; + unsigned index; }; void @@ -76,8 +78,10 @@ lower_const_array_visitor::handle_rvalue(ir_rvalue **rvalue) void *mem_ctx = ralloc_parent(con); + char *uniform_name = ralloc_asprintf(mem_ctx, "constarray__%d", index++); + ir_variable *uni = - new(mem_ctx) ir_variable(con->type, "constarray", ir_var_uniform); + new(mem_ctx) ir_variable(con->type, uniform_name, ir_var_uniform); uni->constant_initializer = con; uni->constant_value = con; uni->data.has_initializer = true; |