summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris Forbes <[email protected]>2014-11-18 21:15:05 +1300
committerEmil Velikov <[email protected]>2014-11-26 21:20:33 +0000
commit7e47ae318578994602be8d74f2bc365aec1fa896 (patch)
tree377868b7242930af7dd19d4afbb949af3eb2b755 /src
parent9e94c0593697f2d2c7231c13d1480293142430ce (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.cpp6
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;