In some situations it is convenient for a driver to expose a higher GLSL version while some extensions are still incomplete. However in that situation, it would report a GLSL version that was higher than the GL version. Avoid that situation by limiting the GLSL version to the GL version.
Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> --- v1 -> v2: do work in _mesa_compute_version, not in compute_version only fix up core profile (easier and this situation doesn't come up for compat) src/mesa/main/version.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index da255b2..6024dc8 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -483,6 +483,17 @@ _mesa_compute_version(struct gl_context *ctx) ctx->Version = _mesa_get_version(&ctx->Extensions, &ctx->Const, ctx->API); + /* Make sure that the GLSL version lines up with the GL version. In some + * cases it can be too high, e.g. if an extension is missing. + */ + if (ctx->API == API_OPENGL_CORE) { + switch (ctx->Version) { + case 31: ctx->Const.GLSLVersion = 140; break; + case 32: ctx->Const.GLSLVersion = 150; break; + default: ctx->Const.GLSLVersion = ctx->Version * 10; break; + } + } + switch (ctx->API) { case API_OPENGL_COMPAT: case API_OPENGL_CORE: -- 2.0.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev