On 12/28/2015 09:00 PM, Timothy Arceri wrote: > An SSO program can have multiple stages and we only want to add the externally > facing varyings. The current code was adding both the packed inputs and > outputs > for the first and last stage of each program.
Using just SSO and ARB_program_interface_query, is this problem externally visible? If it is externally visible: 1. Is there a piglit test? 2. Should this fix be tagged for stable? > --- > src/glsl/linker.cpp | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp > index c7e6976..d11c404 100644 > --- a/src/glsl/linker.cpp > +++ b/src/glsl/linker.cpp > @@ -3433,7 +3433,7 @@ add_interface_variables(struct gl_shader_program > *shProg, > } > > static bool > -add_packed_varyings(struct gl_shader_program *shProg, int stage) > +add_packed_varyings(struct gl_shader_program *shProg, int stage, GLenum type) > { > struct gl_shader *sh = shProg->_LinkedShaders[stage]; > GLenum iface; > @@ -3454,10 +3454,13 @@ add_packed_varyings(struct gl_shader_program *shProg, > int stage) > default: > unreachable("unexpected type"); > } > - if (!add_program_resource(shProg, iface, var, > - build_stageref(shProg, var->name, > - var->data.mode))) > - return false; > + > + if (type == iface) { > + if (!add_program_resource(shProg, iface, var, > + build_stageref(shProg, var->name, > + var->data.mode))) > + return false; > + } > } > } > return true; > @@ -3724,9 +3727,9 @@ build_program_resource_list(struct gl_shader_program > *shProg) > > /* Program interface needs to expose varyings in case of SSO. */ > if (shProg->SeparateShader) { > - if (!add_packed_varyings(shProg, input_stage)) > + if (!add_packed_varyings(shProg, input_stage, GL_PROGRAM_INPUT)) > return; > - if (!add_packed_varyings(shProg, output_stage)) > + if (!add_packed_varyings(shProg, output_stage, GL_PROGRAM_OUTPUT)) > return; > } > g _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev