[Mesa-dev] [PATCH 2/2] mesa: allow forcing >=3.1 compatibility contexts with MESA_GL_VERSION_OVERRIDE

Marek Olšák maraeo at gmail.com
Fri Sep 19 12:03:44 PDT 2014


From: Marek Olšák <marek.olsak at amd.com>

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.
---
 src/mesa/main/version.c | 16 ++++++++++------
 1 file 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;
 }
-- 
1.9.1



More information about the mesa-dev mailing list