summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/version.c
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2014-09-14 23:12:06 +0200
committerMarek Olšák <marek.olsak@amd.com>2014-09-24 14:48:01 +0200
commit2599b92eb9751747d4eab8820384d2e5cc4f6801 (patch)
tree973d0acdbb91e80b9a159e8c5bfce9aef4233cdf /src/mesa/main/version.c
parent10ffd98c34c2d730a50de21bc7b5c6fa483fbf9d (diff)
downloadexternal_mesa3d-2599b92eb9751747d4eab8820384d2e5cc4f6801.zip
external_mesa3d-2599b92eb9751747d4eab8820384d2e5cc4f6801.tar.gz
external_mesa3d-2599b92eb9751747d4eab8820384d2e5cc4f6801.tar.bz2
mesa: allow forcing >=3.1 compatibility contexts with MESA_GL_VERSION_OVERRIDE
E.g. the 4.0 compatibility profile can be forced with: MESA_GL_VERSION_OVERRIDE=4.0COMPAT Some tests that I have require 4.0 compatibility. Reviewed-by: Brian Paul <brianp@vmware.com>
Diffstat (limited to 'src/mesa/main/version.c')
-rw-r--r--src/mesa/main/version.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index 4dea530..71f7011 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -57,13 +57,15 @@ check_for_ending(const char *string, const char *ending)
* fwd_context is only valid if version > 0
*/
static void
-get_gl_override(int *version, GLboolean *fwd_context)
+get_gl_override(int *version, GLboolean *fwd_context,
+ GLboolean *compat_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;
+ static GLboolean compat_suffix = GL_FALSE;
if (override_version < 0) {
override_version = 0;
@@ -71,6 +73,7 @@ get_gl_override(int *version, GLboolean *fwd_context)
version_str = getenv(env_var);
if (version_str) {
fc_suffix = check_for_ending(version_str, "FC");
+ compat_suffix = check_for_ending(version_str, "COMPAT");
n = sscanf(version_str, "%u.%u", &major, &minor);
if (n != 2) {
@@ -87,6 +90,7 @@ get_gl_override(int *version, GLboolean *fwd_context)
*version = override_version;
*fwd_context = fc_suffix;
+ *compat_context = compat_suffix;
}
/**
@@ -129,16 +133,16 @@ _mesa_override_gl_version_contextless(struct gl_constants *consts,
gl_api *apiOut, GLuint *versionOut)
{
int version;
- GLboolean fwd_context;
+ GLboolean fwd_context, compat_context;
- get_gl_override(&version, &fwd_context);
+ get_gl_override(&version, &fwd_context, &compat_context);
if (version > 0) {
*versionOut = version;
if (version >= 30 && fwd_context) {
*apiOut = API_OPENGL_CORE;
consts->ContextFlags |= GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT;
- } else if (version >= 31) {
+ } else if (version >= 31 && !compat_context) {
*apiOut = API_OPENGL_CORE;
} else {
*apiOut = API_OPENGL_COMPAT;
@@ -166,9 +170,9 @@ int
_mesa_get_gl_version_override(void)
{
int version;
- GLboolean fwd_context;
+ GLboolean fwd_context, compat_context;
- get_gl_override(&version, &fwd_context);
+ get_gl_override(&version, &fwd_context, &compat_context);
return version;
}