glsl: Make invariant outputs in ES fragment shader not to cause error
authorDanylo Piliaiev <danylo.piliaiev@globallogic.com>
Wed, 5 Sep 2018 12:26:48 +0000 (15:26 +0300)
committerTimothy Arceri <tarceri@itsqueeze.com>
Fri, 11 Jan 2019 02:01:11 +0000 (13:01 +1100)
In all GLSL ES versions output variables in fragment shader are allowed
to be invariant.

 From Section 4.6.1 ("The Invariant Qualifier") GLSL ES 1.00 spec:
 "Only the following variables may be declared as invariant:
   ...
   - Built-in special variables output from the fragment shader."

 From Section 4.6.1 ("The Invariant Qualifier") GLSL ES 3.00 spec:
 "Only variables output from a shader can be candidates for invariance."

Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107842

src/compiler/glsl/ast_to_hir.cpp

index 611cfabbd0343d90c1c6d63805ed47463896c27b..67a5a8c0509266bd9fb2579dd61c560455fa0139 100644 (file)
@@ -2721,7 +2721,7 @@ is_allowed_invariant(ir_variable *var, struct _mesa_glsl_parse_state *state)
     * "Only variables output from a vertex shader can be candidates
     * for invariance".
     */
-   if (!state->is_version(130, 0))
+   if (!state->is_version(130, 100))
       return false;
 
    /*