CCing Timothy just in case he still thinks that the original comment should remain as it is. In any case, it looks to me, so:
Reviewed-by: Alejandro Piñeiro <apinhe...@igalia.com> On 23/08/18 12:12, vadym.shovkoplias wrote: > From Section 4.3.4 (Inputs) of the GLSL 1.50 spec: > > "Only the input variables that are actually read need to be written > by the previous stage; it is allowed to have superfluous > declarations of input variables." > > Fixes: > * interstage-multiple-shader-objects.shader_test > > v2: > Update comment in ir.h since the usage of "used" field > has been extended. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101247 > Signed-off-by: Vadym Shovkoplias <vadym.shovkopl...@globallogic.com> > --- > src/compiler/glsl/ir.h | 4 ++-- > src/compiler/glsl/link_interface_blocks.cpp | 8 +++++++- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h > index 67b38f48ef..d05d1998a5 100644 > --- a/src/compiler/glsl/ir.h > +++ b/src/compiler/glsl/ir.h > @@ -667,8 +667,8 @@ public: > * variable has been used. For example, it is an error to redeclare a > * variable as invariant after it has been used. > * > - * This is only maintained in the ast_to_hir.cpp path, not in > - * Mesa's fixed function or ARB program paths. > + * This is maintained in the ast_to_hir.cpp path and during linking, > + * but not in Mesa's fixed function or ARB program paths. > */ > unsigned used:1; > > diff --git a/src/compiler/glsl/link_interface_blocks.cpp > b/src/compiler/glsl/link_interface_blocks.cpp > index e5eca9460e..801fbcd5d9 100644 > --- a/src/compiler/glsl/link_interface_blocks.cpp > +++ b/src/compiler/glsl/link_interface_blocks.cpp > @@ -417,9 +417,15 @@ validate_interstage_inout_blocks(struct > gl_shader_program *prog, > * write to any of the pre-defined outputs (e.g. if the vertex shader > * does not write to gl_Position, etc), which is allowed and results in > * undefined behavior. > + * > + * From Section 4.3.4 (Inputs) of the GLSL 1.50 spec: > + * > + * "Only the input variables that are actually read need to be > written > + * by the previous stage; it is allowed to have superfluous > + * declarations of input variables." > */ > if (producer_def == NULL && > - !is_builtin_gl_in_block(var, consumer->Stage)) { > + !is_builtin_gl_in_block(var, consumer->Stage) && var->data.used) { > linker_error(prog, "Input block `%s' is not an output of " > "the previous stage\n", > var->get_interface_type()->name); > return; _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev