On 02/12/14 21:56, Ian Romanick wrote: > On 12/02/2014 12:54 PM, Ian Romanick wrote: >> 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. > > Ignore this part. invariant is a keyword in GLSL ES 1.00. > >> 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> >>
OK, thanks! Sam >>> } >>> | 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 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev