Mesa (refs/tags/cros-mesa-10.3-r15-vanilla): glsl: Generate unique names for each const array lowered to uniforms

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 29 22:54:54 UTC 2020


Module: Mesa
Branch: refs/tags/cros-mesa-10.3-r15-vanilla
Commit: 129178893b2260df22db96327c5ca9c2ce7db046
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=129178893b2260df22db96327c5ca9c2ce7db046

Author: Chris Forbes <chrisf at ijw.co.nz>
Date:   Tue Nov 18 21:15:05 2014 +1300

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 <chrisf at ijw.co.nz>
Cc: "10.4" <mesa-stable at lists.freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/glsl/lower_const_arrays_to_uniforms.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

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;



More information about the mesa-commit mailing list