Mesa (master): glsl/linker: Fix out variables linking during single stage

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Oct 29 23:28:01 UTC 2018


Module: Mesa
Branch: master
Commit: 7d66eddbbdec98df21dc9d8286f8e047d575b52d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7d66eddbbdec98df21dc9d8286f8e047d575b52d

Author: Vadym Shovkoplias <vadim.shovkoplias at gmail.com>
Date:   Wed Oct 24 13:28:23 2018 +0300

glsl/linker: Fix out variables linking during single stage

Since out variables are copied from shader objects instruction
streams to linked shader instruction steam it should be cloned
at first to keep source instruction steam unaltered.

Fixes: 966a797e433 ("glsl/linker: Link all out vars from a shader
objects on a single stage")

Signed-off-by: Vadym Shovkoplias <vadym.shovkoplias at globallogic.com>
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105731

---

 src/compiler/glsl/linker.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index 7db34ebf95..8b1b03322a 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -2269,10 +2269,11 @@ link_output_variables(struct gl_linked_shader *linked_shader,
          if (ir->ir_type != ir_type_variable)
             continue;
 
-         ir_variable *const var = (ir_variable *) ir;
+         ir_variable *var = (ir_variable *) ir;
 
          if (var->data.mode == ir_var_shader_out &&
                !symbols->get_variable(var->name)) {
+            var = var->clone(linked_shader, NULL);
             symbols->add_variable(var);
             linked_shader->ir->push_head(var);
          }




More information about the mesa-commit mailing list