From: Vadym Shovkoplias Date: Wed, 24 Oct 2018 10:28:23 +0000 (+0300) Subject: glsl/linker: Fix out variables linking during single stage X-Git-Tag: android-x86-8.1-r1~268 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7d66eddbbdec98df21dc9d8286f8e047d575b52d;p=android-x86%2Fexternal-mesa.git 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 Reviewed-by: Timothy Arceri Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105731 --- diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index 7db34ebf95b..8b1b03322a0 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); }