mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-19 10:38:30 +02:00
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:2599b92eb9("mesa: allow forcing >=3.1 compatibility contexts with MESA_GL_VERSION_OVERRIDE") Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Ian Romanick <ian.d.romanick@intel.com> Cc: Eric Engestrom <eric.engestrom@imgtec.com> Cc: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> (cherry picked from commit806ab42c0f)
This commit is contained in:
parent
7711ae2987
commit
5eef557ddd
2 changed files with 45 additions and 28 deletions
|
|
@ -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 >= 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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue