glsl: allow invariant on fragment shader outputs.
authorDave Airlie <airlied@redhat.com>
Mon, 23 May 2016 04:18:03 +0000 (14:18 +1000)
committerAndres Gomez <agomez@igalia.com>
Tue, 20 Dec 2016 09:44:34 +0000 (11:44 +0200)
commitab8ea1b3d481ff39fbfc2b75a63b24838aaf7476
tree70c7c6b45b7752340a33de23a02d8d17514436cf
parentf562b13bc7d0b4fd954d285a9325e94167b16bf5
glsl: allow invariant on fragment shader outputs.

From page 27 (page 33 of the PDF) of the GLSL 1.20 spec:

    " Only variables output from a vertex shader can be candidates for
      invariance."

But this later changes to:

From page 37 (page 43 of the PDF) of the GLSL 1.30 spec:

    " Only variables output from a shader can be candidates for
      invariance."

We can also find:

From page 37 (page 43 of the PDF) of the GLSL 1.30 spec:

    " Initially, by default, all output variables are allowed to be
      variant. To force all output variables to be invariant, use the
      pragma

        #pragma STDGL invariant(all)

      before all declarations in a shader. If this pragma is used after
      the declaration of any variables or functions, then the set of
      outputs that behave as invariant is undefined. It is an error to
      use this pragma in a fragment shader."

But this needs to be corrected and it is being addressed at:
https://cvs.khronos.org/bugzilla/show_bug.cgi?id=16140

Fixes GL45-CTS.shading_language_420pack.qualifier_order.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Andres Gomez <agomez@igalia.com>
src/compiler/glsl/ast_to_hir.cpp