diff options
author | marha <marha@users.sourceforge.net> | 2013-03-04 09:37:48 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-03-04 09:37:48 +0100 |
commit | ed474047e06f28fe740130f3bb13d3a40f4833a9 (patch) | |
tree | 35a48f61c00ebb1f0579159c25dbbd1bfe812849 /mesalib/src/mesa/main/version.c | |
parent | 3c0e16af61a9e0b6f9edab1d403adfaa85456599 (diff) | |
parent | d4d629b77742e60caac3d120ff40e9f386380af2 (diff) | |
download | vcxsrv-ed474047e06f28fe740130f3bb13d3a40f4833a9.tar.gz vcxsrv-ed474047e06f28fe740130f3bb13d3a40f4833a9.tar.bz2 vcxsrv-ed474047e06f28fe740130f3bb13d3a40f4833a9.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
fontconfig libX11 mesalib pixman xserver xkeyboard-config git update 4 Mar 2013
Conflicts:
libX11/src/xkb/XKBGAlloc.c
libX11/src/xkb/XKBMisc.c
Diffstat (limited to 'mesalib/src/mesa/main/version.c')
-rw-r--r-- | mesalib/src/mesa/main/version.c | 94 |
1 files changed, 67 insertions, 27 deletions
diff --git a/mesalib/src/mesa/main/version.c b/mesalib/src/mesa/main/version.c index 281d652a5..c5b44b7c1 100644 --- a/mesalib/src/mesa/main/version.c +++ b/mesalib/src/mesa/main/version.c @@ -50,6 +50,45 @@ check_for_ending(const char *string, const char *ending) } /** + * Returns the gl override data + * + * version > 0 indicates there is an override requested + * fwd_context is only valid if version > 0 + */ +static void +get_gl_override(int *version, GLboolean *fwd_context) +{ + const char *env_var = "MESA_GL_VERSION_OVERRIDE"; + const char *version_str; + int major, minor, n; + static int override_version = -1; + static GLboolean fc_suffix = GL_FALSE; + + if (override_version < 0) { + override_version = 0; + + version_str = getenv(env_var); + if (version_str) { + fc_suffix = check_for_ending(version_str, "FC"); + + n = sscanf(version_str, "%u.%u", &major, &minor); + if (n != 2) { + fprintf(stderr, "error: invalid value for %s: %s\n", env_var, version_str); + override_version = 0; + } else { + override_version = major * 10 + minor; + if (override_version < 30 && fc_suffix) { + fprintf(stderr, "error: invalid value for %s: %s\n", env_var, version_str); + } + } + } + } + + *version = override_version; + *fwd_context = fc_suffix; +} + +/** * Builds the MESA version string. */ static void @@ -87,41 +126,42 @@ create_version_string(struct gl_context *ctx, const char *prefix) void _mesa_override_gl_version(struct gl_context *ctx) { - const char *env_var = "MESA_GL_VERSION_OVERRIDE"; - const char *version; - int n; - int major, minor; - GLboolean fc_suffix; + int version; + GLboolean fwd_context; - version = getenv(env_var); - if (!version) { - return; - } + get_gl_override(&version, &fwd_context); - fc_suffix = check_for_ending(version, "FC"); - - n = sscanf(version, "%u.%u", &major, &minor); - if (n != 2) { - fprintf(stderr, "error: invalid value for %s: %s\n", env_var, version); - } else { - ctx->Version = major * 10 + minor; - if (ctx->Version < 30 && fc_suffix) { - fprintf(stderr, "error: invalid value for %s: %s\n", env_var, version); + if (version > 0) { + ctx->Version = version; + if (version >= 30 && fwd_context) { + ctx->API = API_OPENGL_CORE; + ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT; + } else if (version >= 31) { + ctx->API = API_OPENGL_CORE; } else { - if (ctx->Version >= 30 && fc_suffix) { - ctx->API = API_OPENGL_CORE; - ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT; - } else if (ctx->Version >= 31) { - ctx->API = API_OPENGL_CORE; - } else { - ctx->API = API_OPENGL_COMPAT; - } - create_version_string(ctx, ""); + ctx->API = API_OPENGL_COMPAT; } + create_version_string(ctx, ""); } } /** + * Returns the gl override value + * + * version > 0 indicates there is an override requested + */ +int +_mesa_get_gl_version_override(void) +{ + int version; + GLboolean fwd_context; + + get_gl_override(&version, &fwd_context); + + return version; +} + +/** * Override the context's GLSL version if the environment variable * MESA_GLSL_VERSION_OVERRIDE is set. Valid values for * MESA_GLSL_VERSION_OVERRIDE are integers, such as "130". |