On 10/17/2013 08:07 PM, Paul Berry wrote: > 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}".
Are there any piglit tests that now fail? It seems like we may have had one or two tests that verify the (old) spec behavior... You should ping the reporter of this bug: https://bugs.freedesktop.org/show_bug.cgi?id=70261 This should fix his problem as well. > --- > src/glsl/linker.cpp | 10 +++------- > 1 file changed, 3 insertions(+), 7 deletions(-) > > diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp > index 9095a40..0a949b4 100644 > --- a/src/glsl/linker.cpp > +++ b/src/glsl/linker.cpp > @@ -2057,14 +2057,10 @@ link_shaders(struct gl_context *ctx, struct > gl_shader_program *prog) > } > } > > - /* Previous to GLSL version 1.30, different compilation units could mix > and > - * match shading language versions. With GLSL 1.30 and later, the > versions > - * of all shaders must match. > - * > - * GLSL ES has never allowed mixing of shading language versions. > + /* In desktop GLSL, different shader versions may be linked together. In > + * GLSL ES, all shader versions must be the same. > */ > - if ((is_es_prog || max_version >= 130) > - && min_version != max_version) { > + if (is_es_prog && min_version != max_version) { > linker_error(prog, "all shaders must use same shading " > "language version\n"); > goto done; > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev