glsl/linker: Allow mixing of desktop GLSL versions.
authorPaul Berry <stereotype441@gmail.com>
Mon, 14 Oct 2013 01:01:11 +0000 (18:01 -0700)
committerPaul Berry <stereotype441@gmail.com>
Tue, 22 Oct 2013 00:27:41 +0000 (17:27 -0700)
commit672fab0b1bdffbbdf689f8494c798f868d4d84a4
treef160f4f7acda53d7062e0d5e881192d0585fd91e
parente26ed750668f1eb7aa9c81224bfd0c4a5f72e282
glsl/linker: Allow mixing of desktop GLSL versions.

Previously, Mesa followed the linkage rules outlined in the GLSL
1.20-1.40 specs, which (collectively) said that GLSL versions 1.10 and
1.20 could be linked together, but no other versions could be linked.

In GLSL 4.30, the linkage rules were relaxed so that any two desktop
GLSL versions can be linked together.  This change was made because it
reflected the behaviour of nearly all existing implementations (see
Khronos bug 8463).  Mesa was one of the few (perhaps the only)
exceptions to prohibit cross-linking of some GLSL versions.

Since the GLSL linkage rules were deliberately relaxed in order to
match the behaviour of existing implementations, it seems appropriate
to relax the rules in Mesa too (even though Mesa doesn't support GLSL
4.30 yet).

Note that linking ES and desktop shaders is still prohibited, as is
linking ES shaders having different GLSL versions.

Fixes piglit tests "shaders/version-mixing {interstage,intrastage}".

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/glsl/linker.cpp