In GLES shader versions must match but there is nothing in the ARB_ES*_compatibility specs that say they must match.
This fixes some compilation errors in Google Earth VR. --- src/compiler/glsl/linker.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index f060c5316fa..2b7ee0ad5a6 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -83,6 +83,7 @@ #include "builtin_functions.h" #include "shader_cache.h" +#include "main/context.h" #include "main/imports.h" #include "main/shaderobj.h" #include "main/enums.h" @@ -4799,7 +4800,8 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) min_version = MIN2(min_version, prog->Shaders[i]->Version); max_version = MAX2(max_version, prog->Shaders[i]->Version); - if (prog->Shaders[i]->IsES != prog->Shaders[0]->IsES) { + if (!_mesa_is_desktop_gl(ctx) && + prog->Shaders[i]->IsES != prog->Shaders[0]->IsES) { linker_error(prog, "all shaders must use same shading " "language version\n"); goto done; @@ -4817,7 +4819,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) /* In desktop GLSL, different shader versions may be linked together. In * GLSL ES, all shader versions must be the same. */ - if (prog->Shaders[0]->IsES && min_version != max_version) { + if (!_mesa_is_desktop_gl(ctx) && min_version != max_version) { linker_error(prog, "all shaders must use same shading " "language version\n"); goto done; -- 2.17.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev