Commit 0527c11d authored by Chad Versace's avatar Chad Versace
Browse files

mesa: Allow override of GL version with environment variable



It is necessary to manually set the GL version to 3.0 in order to run
Piglit tests that use glGetUniform*().

This patch allows one to override the version of the OpenGL context by
setting the environment variable MESA_GL_VERSION_OVERRIDE.
Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
Reviewed-by: default avatarIan Romanick <ian.d.romanick@intel.com>
Signed-off-by: chadversary's avatarChad Versace <chad@chad-versace.us>
parent b565e62a
......@@ -58,6 +58,10 @@ copied into a fixed-size buffer without truncating.
If the extension string is too long, the buffer overrun can cause the game
to crash.
This is a work-around for that.
<li>MESA_GL_VERSION_OVERRIDE - changes the value returned by
glGetString(GL_VERSION). Valid values are point-separated version numbers,
such as "3.0". Mesa will not really implement all the features of the given
version if it's higher than what's normally reported.
<li>MESA_GLSL - <a href="shading.html#envvars">shading language compiler options</a>
</ul>
......
......@@ -27,7 +27,29 @@
#include "version.h"
#include "git_sha1.h"
/**
* Override the context's GL version if the environment variable
* MESA_GL_VERSION_OVERRIDE is set. Valid values of MESA_GL_VERSION_OVERRIDE
* are point-separated version numbers, such as "3.0".
*/
static void
override_version(struct gl_context *ctx, GLuint *major, GLuint *minor)
{
const char *env_var = "MESA_GL_VERSION_OVERRIDE";
const char *version;
int n;
version = getenv(env_var);
if (!version) {
return;
}
n = sscanf(version, "%d.%d", major, minor);
if (n != 2) {
fprintf(stderr, "error: invalid value for %s: %s\n", env_var, version);
return;
}
}
/**
* Examine enabled GL extensions to determine GL version.
......@@ -178,6 +200,9 @@ compute_version(struct gl_context *ctx)
ctx->VersionMajor = major;
ctx->VersionMinor = minor;
override_version(ctx, &ctx->VersionMajor, &ctx->VersionMinor);
ctx->VersionString = (char *) malloc(max);
if (ctx->VersionString) {
_mesa_snprintf(ctx->VersionString, max,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment