On 11/04/2014 04:20 AM, Tapani Pälli wrote: > Note that some of the GLSL specifications explicitly state this as > compile error, some simply state that 'it is an error'. > > Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> > --- > src/glsl/glsl_parser.yy | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy > index 6160e26..6a55a4e 100644 > --- a/src/glsl/glsl_parser.yy > +++ b/src/glsl/glsl_parser.yy > @@ -331,7 +331,18 @@ pragma_statement: > | PRAGMA_OPTIMIZE_OFF EOL > | PRAGMA_INVARIANT_ALL EOL > { > - if (!state->is_version(120, 100)) { > + /* Pragma invariant(all) cannot be used in a fragment shader. > + * > + * Page 27 of the GLSL 1.20 spec, Page 53 of the GLSL ES 3.00 spec: > + * > + * "It is an error to use this pragma in a fragment shader." > + */ > + if (state->is_version(120, 300) && > + state->stage == MESA_SHADER_FRAGMENT) {
So... this is allowed in GLSL ES 1.00? That seems weird. Do we have any idea if other implementations allow it? It seems like we should emit a warning, since it is illegal elsewhere... > + _mesa_glsl_error(& @1, state, > + "pragma `invariant(all)' cannot be used " > + "in a fragment shader."); > + } else if (!state->is_version(120, 100)) { > _mesa_glsl_warning(& @1, state, > "pragma `invariant(all)' not supported in %s " > "(GLSL ES 1.00 or GLSL 1.20 required)", > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev