From 806ab42c0f53064a774f002e311cfbb7ff10a667 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 6 Mar 2018 18:27:30 -0500 Subject: [PATCH] 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 Cc: Ian Romanick Cc: Eric Engestrom Cc: Emil Velikov Reviewed-by: Emil Velikov --- 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 08c259c..24bdc5b 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 a280690..3b51b1e 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; } } -- 2.7.4