From 356c99b4e79631e195058a2796eba0cdfc1d7a29 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 29 Mar 2016 11:31:10 -0700 Subject: [PATCH] glsl: Pass stage to add_interface_variables(). add_interface_variables is supposed to add variables from either the first or last stage of a linked shader. But it has no way of knowing the stage it's being asked to process, which makes it impossible to produce correct stagerefs. Signed-off-by: Kenneth Graunke Reviewed-by: Timothy Arceri --- src/compiler/glsl/linker.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index cd096bafd0a..52df52c244e 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -3519,8 +3519,10 @@ create_shader_variable(struct gl_shader_program *shProg, const ir_variable *in) static bool add_interface_variables(struct gl_shader_program *shProg, - exec_list *ir, GLenum programInterface) + unsigned stage, GLenum programInterface) { + exec_list *ir = shProg->_LinkedShaders[stage]->ir; + foreach_in_list(ir_instruction, node, ir) { ir_variable *var = node->as_variable(); uint8_t mask = 0; @@ -3893,12 +3895,10 @@ build_program_resource_list(struct gl_context *ctx, return; /* Add inputs and outputs to the resource list. */ - if (!add_interface_variables(shProg, shProg->_LinkedShaders[input_stage]->ir, - GL_PROGRAM_INPUT)) + if (!add_interface_variables(shProg, input_stage, GL_PROGRAM_INPUT)) return; - if (!add_interface_variables(shProg, shProg->_LinkedShaders[output_stage]->ir, - GL_PROGRAM_OUTPUT)) + if (!add_interface_variables(shProg, output_stage, GL_PROGRAM_OUTPUT)) return; /* Add transform feedback varyings. */ -- 2.30.2