mesa: simplify MESA_GL_VERSION_OVERRIDE behavior of API override

Graphics / Mesa 3D Graphics Library / Mesa - Marek Olšák [amd.com] - 9 April 2018 10:47 EDT

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 Cc: Ian Romanick Cc: Eric Engestrom Cc: Emil Velikov

###

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.

  • MESA_GL_VERSION_OVERRIDE - changes the value returned by
    glGetString(GL_VERSION) and possibly the GL API type.

      -
    • The format should be MAJOR.MINOR[FC]
      -
    • FC is an optional suffix that indicates a forward compatible context.
      -This is only valid for versions >= 3.0.
      -
    • GL versions < 3.0 are set to a compatibility (non-Core) profile
      -
    • GL versions = 3.0, see below
      -
    • GL versions > 3.0 are set to a Core profile
      -
    • Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC
      -

        -
      • 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
        -

      -
    • Mesa may not really implement all the features of the given version.
      -(for developers only)
      +
    • The format should be MAJOR.MINOR[FC|COMPAT]
      +
    • FC is an optional suffix that indicates a forward compatible
      + context. This is only valid for versions >= 3.0.
      +
    • COMPAT is an optional suffix that indicates a compatibility
      + context or GL_ARB_compatibility support. This is only valid for
      + versions >= 3.1.
      +
    • GL versions <= 3.0 are set to a compatibility (non-Core)
      + profile
      +
    • GL versions = 3.1, depending on the driver, it may or may not
      + have the ARB_compatibility extension enabled.
      +
    • GL versions >= 3.2 are set to a Core profile
      +
    • Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC, 3.1COMPAT, X.Y, X.YFC,
      + X.YCOMPAT.
      +

        +
      • 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.
        +

      +
    • Mesa may not really implement all the features of the given
      + version. (for developers only)

  • 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;
    }
    }

    806ab42c0f mesa: simplify MESA_GL_VERSION_OVERRIDE behavior of API override
    docs/envvars.html | 50 +++++++++++++++++++++++++++++++++----------------
    src/mesa/main/version.c | 23 +++++++++++------------
    2 files changed, 45 insertions(+), 28 deletions(-)

    Upstream: cgit.freedesktop.org


    • Share