On 12/01/2014 05:04 AM, Eduardo Lima Mitev wrote: > From: Samuel Iglesias Gonsalvez <sigles...@igalia.com> > > GLSL ES 3.00 spec, chapter 4.6.1 "The Invariant Qualifier", > > Only variables output from a shader can be candidates for invariance. This > includes user-defined output variables and the built-in output variables. > As only outputs can be declared as invariant, an invariant output from one > shader stage will still match an input of a subsequent stage without the > input being declared as invariant. > > This patch fixes the following dEQP tests: > > dEQP-GLES3.functional.shaders.qualification_order.variables.valid.invariant_interp_storage_precision > dEQP-GLES3.functional.shaders.qualification_order.variables.valid.invariant_interp_storage > dEQP-GLES3.functional.shaders.qualification_order.variables.valid.invariant_storage_precision > dEQP-GLES3.functional.shaders.qualification_order.variables.valid.invariant_storage > dEQP-GLES3.functional.shaders.qualification_order.variables.invalid.invariant_interp_storage_precision_invariant_input > dEQP-GLES3.functional.shaders.qualification_order.variables.invalid.invariant_interp_storage_invariant_input > dEQP-GLES3.functional.shaders.qualification_order.variables.invalid.invariant_storage_precision_invariant_input > dEQP-GLES3.functional.shaders.qualification_order.variables.invalid.invariant_storage_invariant_input > > No piglit regressions observed. > > Signed-off-by: Samuel Iglesias Gonsalvez <sigles...@igalia.com> > --- > src/glsl/glsl_parser.yy | 2 ++ > src/glsl/link_varyings.cpp | 2 +- > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy > index 6160e26..55b3a7d 100644 > --- a/src/glsl/glsl_parser.yy > +++ b/src/glsl/glsl_parser.yy > @@ -1591,6 +1591,8 @@ type_qualifier: > > $$ = $2; > $$.flags.q.invariant = 1; > + if (state->es_shader && state->language_version >= 300 && > $$.flags.q.in) > + _mesa_glsl_error(&@1, state, "invariant qualifiers cannot be used > with shader inputs");
Since we already reject the invariant keyword for GLSL ES 1.00, I think you can drop the '&& state->language_version >= 300' part. I would also add the spec quotation from the commit message here. With those changes, this patch is Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> > } > | interpolation_qualifier type_qualifier > { > diff --git a/src/glsl/link_varyings.cpp b/src/glsl/link_varyings.cpp > index 1866ab2..1fe198a 100644 > --- a/src/glsl/link_varyings.cpp > +++ b/src/glsl/link_varyings.cpp > @@ -116,7 +116,7 @@ cross_validate_types_and_qualifiers(struct > gl_shader_program *prog, > return; > } > > - if (input->data.invariant != output->data.invariant) { > + if (!prog->IsES && input->data.invariant != output->data.invariant) { > linker_error(prog, > "%s shader output `%s' %s invariant qualifier, " > "but %s shader input %s invariant qualifier\n", > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev