Module: Mesa
Branch: master
Commit: 806ab42c0f53064a774f002e311cfbb7ff10a667
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=806ab42c0f53064a774f002e311cfbb7ff10a667

Author: Marek Olšák <marek.ol...@amd.com>
Date:   Tue Mar  6 18:27:30 2018 -0500

mesa: simplify MESA_GL_VERSION_OVERRIDE behavior of API override

v2:
 - Provide a correct explanation on the envvars documentation (Ian).
 - Provide a more correct explanation on the function comments (Andres).
v3:
 - Homogenize documentation and inline comments (Emil).
 - Correct a typo (Emil).

Fixes: 2599b92eb97 ("mesa: allow forcing >=3.1 compatibility contexts
with MESA_GL_VERSION_OVERRIDE")

Cc: Jordan Justen <jordan.l.jus...@intel.com>
Cc: Ian Romanick <ian.d.roman...@intel.com>
Cc: Eric Engestrom <eric.engest...@imgtec.com>
Cc: Emil Velikov <emil.veli...@collabora.com>
Reviewed-by: Emil Velikov <emil.veli...@collabora.com>

---

 docs/envvars.html       | 50 +++++++++++++++++++++++++++++++++----------------
 src/mesa/main/version.c | 23 +++++++++++------------
 2 files changed, 45 insertions(+), 28 deletions(-)

diff --git a/docs/envvars.html b/docs/envvars.html
index 08c259cc7b..24bdc5bcb8 100644
--- a/docs/envvars.html
+++ b/docs/envvars.html
@@ -88,22 +88,40 @@ This is a work-around for that.
 <li>MESA_GL_VERSION_OVERRIDE - changes the value returned by
 glGetString(GL_VERSION) and possibly the GL API type.
 <ul>
-<li> The format should be MAJOR.MINOR[FC]
-<li> FC is an optional suffix that indicates a forward compatible context.
-This is only valid for versions &gt;= 3.0.
-<li> GL versions &lt; 3.0 are set to a compatibility (non-Core) profile
-<li> GL versions = 3.0, see below
-<li> GL versions &gt; 3.0 are set to a Core profile
-<li> Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC
-<ul>
-<li> 2.1 - select a compatibility (non-Core) profile with GL version 2.1
-<li> 3.0 - select a compatibility (non-Core) profile with GL version 3.0
-<li> 3.0FC - select a Core+Forward Compatible profile with GL version 3.0
-<li> 3.1 - select a Core profile with GL version 3.1
-<li> 3.1FC - select a Core+Forward Compatible profile with GL version 3.1
-</ul>
-<li> Mesa may not really implement all the features of the given version.
-(for developers only)
+  <li>The format should be MAJOR.MINOR[FC|COMPAT]
+  <li>FC is an optional suffix that indicates a forward compatible
+      context. This is only valid for versions &gt;= 3.0.
+  <li>COMPAT is an optional suffix that indicates a compatibility
+      context or GL_ARB_compatibility support. This is only valid for
+      versions &gt;= 3.1.
+  <li>GL versions &lt;= 3.0 are set to a compatibility (non-Core)
+      profile
+  <li>GL versions = 3.1, depending on the driver, it may or may not
+      have the ARB_compatibility extension enabled.
+  <li>GL versions &gt;= 3.2 are set to a Core profile
+  <li>Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC, 3.1COMPAT, X.Y, X.YFC,
+      X.YCOMPAT.
+  <ul>
+    <li>2.1 - select a compatibility (non-Core) profile with GL
+        version 2.1.
+    <li>3.0 - select a compatibility (non-Core) profile with GL
+        version 3.0.
+    <li>3.0FC - select a Core+Forward Compatible profile with GL
+        version 3.0.
+    <li>3.1 - select GL version 3.1 with GL_ARB_compatibility enabled
+        per the driver default.
+    <li>3.1FC - select GL version 3.1 with forward compatibility and
+        GL_ARB_compatibility disabled.
+    <li>3.1COMPAT - select GL version 3.1 with GL_ARB_compatibility
+        enabled.
+    <li>X.Y - override GL version to X.Y without changing the profile.
+    <li>X.YFC - select a Core+Forward Compatible profile with GL
+        version X.Y.
+    <li>X.YCOMPAT - select a Compatibility profile with GL version
+        X.Y.
+  </ul>
+  <li>Mesa may not really implement all the features of the given
+      version. (for developers only)
 </ul>
 <li>MESA_GLES_VERSION_OVERRIDE - changes the value returned by
 glGetString(GL_VERSION) for OpenGL ES.
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index a28069054d..3b51b1e7a3 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -139,11 +139,15 @@ create_version_string(struct gl_context *ctx, const char 
*prefix)
  *
  * Example uses of MESA_GL_VERSION_OVERRIDE:
  *
- * 2.1: select a compatibility (non-Core) profile with GL version 2.1
- * 3.0: select a compatibility (non-Core) profile with GL version 3.0
- * 3.0FC: select a Core+Forward Compatible profile with GL version 3.0
- * 3.1: select a Core profile with GL version 3.1
- * 3.1FC: select a Core+Forward Compatible profile with GL version 3.1
+ * 2.1: select a compatibility (non-Core) profile with GL version 2.1.
+ * 3.0: select a compatibility (non-Core) profile with GL version 3.0.
+ * 3.0FC: select a Core+Forward Compatible profile with GL version 3.0.
+ * 3.1: select GL version 3.1 with GL_ARB_compatibility enabled per the driver 
default.
+ * 3.1FC: select GL version 3.1 with forward compatibility and 
GL_ARB_compatibility disabled.
+ * 3.1COMPAT: select GL version 3.1 with GL_ARB_compatibility enabled.
+ * X.Y: override GL version to X.Y without changing the profile.
+ * X.YFC: select a Core+Forward Compatible profile with GL version X.Y.
+ * X.YCOMPAT: select a Compatibility profile with GL version X.Y.
  */
 bool
 _mesa_override_gl_version_contextless(struct gl_constants *consts,
@@ -157,17 +161,12 @@ _mesa_override_gl_version_contextless(struct gl_constants 
*consts,
    if (version > 0) {
       *versionOut = version;
 
-      /* If the API is a desktop API, adjust the context flags.  We may also
-       * need to modify the API depending on the version.  For example, Mesa
-       * does not support a GL 3.3 compatibility profile.
-       */
+      /* Modify the API and context flags as needed. */
       if (*apiOut == API_OPENGL_CORE || *apiOut == API_OPENGL_COMPAT) {
          if (version >= 30 && fwd_context) {
             *apiOut = API_OPENGL_CORE;
             consts->ContextFlags |= GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT;
-         } else if (version >= 31 && !compat_context) {
-            *apiOut = API_OPENGL_CORE;
-         } else {
+         } else if (compat_context) {
             *apiOut = API_OPENGL_COMPAT;
          }
       }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to