<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 >= 3.0.
-<li> GL versions < 3.0 are set to a compatibility (non-Core) profile
-<li> GL versions = 3.0, see below
-<li> GL versions > 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 >= 3.0.
+ <li>COMPAT is an optional suffix that indicates a compatibility
+ context or GL_ARB_compatibility support. This is only valid for
+ versions >= 3.1.
+ <li>GL versions <= 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 >= 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.
*
* 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,
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;
}
}