glsl/linker: Check the invariance of built-in special variables
authorVadym Shovkoplias <vadim.shovkoplias@gmail.com>
Fri, 7 Sep 2018 12:14:52 +0000 (15:14 +0300)
committerTapani Pälli <tapani.palli@intel.com>
Wed, 12 Sep 2018 08:43:21 +0000 (11:43 +0300)
commit9b5c0c520f6e41f19b3568a4e0532c836bc522e4
tree461785c1a157f3d016fd4c4ee8c0a0f2281df82a
parent30580640f2508e935e667e25f0e0cf4ff0ce55af
glsl/linker: Check the invariance of built-in special variables

From Section 4.6.4 (Invariance and Linkage) of the GLSL ES 1.0 specification

    "The invariance of varyings that are declared in both the vertex and
     fragment shaders must match. For the built-in special variables,
     gl_FragCoord can only be declared invariant if and only if
     gl_Position is declared invariant. Similarly gl_PointCoord can only
     be declared invariant if and only if gl_PointSize is declared
     invariant. It is an error to declare gl_FrontFacing as invariant.
     The invariance of gl_FrontFacing is the same as the invariance of
     gl_Position."

Fixes:
    * glsl-pcoord-invariant.shader_test
    * glsl-fcoord-invariant.shader_test
    * glsl-fface-invariant.shader_test

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107734
Signed-off-by: Vadym Shovkoplias <vadym.shovkoplias@globallogic.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/compiler/glsl/linker.cpp