diff options
author | Emil Velikov <emil.l.velikov@gmail.com> | 2021-10-02 17:44:34 +0100 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2021-10-16 20:33:53 +0000 |
commit | 0b918edfb59d071c561a19b7d1a454cdbfd80e70 (patch) | |
tree | b55915758a2a6d217586c80a97edf10cabca3d7d /video/out/opengl | |
parent | 0282196f4a3e8c6f0c6613cbd461fcc2f426dca5 (diff) | |
download | mpv-0b918edfb59d071c561a19b7d1a454cdbfd80e70.tar.bz2 mpv-0b918edfb59d071c561a19b7d1a454cdbfd80e70.tar.xz |
vo_gpu: opengl: reduce versions in mpgl_preferred_gl_versions
Currently mpv requires a bare minimum of GL 2.1, although it tries to
use 3.2+ core contexts when possible.
The GLX and EGL spec effectively guarantee that the implementation will
give you the highest compatible version possible. In other words:
Requesting 3.2 core profile will always give you core profile and the
version will be in the 3.2 .. 4.6 range - as supported by the drivers.
Similarly for 2.1 - implementation will give you either:
- 2.1 .. 3.1, or
- 3.2 .. 4.6 compat profile
This has been verified against the Mesa drivers (i965, iris, swrast) and
Nvidia binary drivers.
As such, drop the list to 320, 210 and terminating 0.
v2:
- mpgl_preferred_gl_versions -> mpgl_min_required_gl_versions
- update ^^ comment
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Diffstat (limited to 'video/out/opengl')
-rw-r--r-- | video/out/opengl/context.c | 10 | ||||
-rw-r--r-- | video/out/opengl/context.h | 2 | ||||
-rw-r--r-- | video/out/opengl/context_glx.c | 4 | ||||
-rw-r--r-- | video/out/opengl/egl_helpers.c | 4 |
4 files changed, 7 insertions, 13 deletions
diff --git a/video/out/opengl/context.c b/video/out/opengl/context.c index c491039b66..c9f8445246 100644 --- a/video/out/opengl/context.c +++ b/video/out/opengl/context.c @@ -21,15 +21,9 @@ #include "utils.h" // 0-terminated list of desktop GL versions a backend should try to -// initialize. The first entry is the most preferred version. -const int mpgl_preferred_gl_versions[] = { - 440, - 430, - 400, - 330, +// initialize. Each entry is the minimum required version. +const int mpgl_min_required_gl_versions[] = { 320, - 310, - 300, 210, 0 }; diff --git a/video/out/opengl/context.h b/video/out/opengl/context.h index 2dd2517ef5..d78d17094c 100644 --- a/video/out/opengl/context.h +++ b/video/out/opengl/context.h @@ -4,7 +4,7 @@ #include "video/out/gpu/context.h" #include "common.h" -extern const int mpgl_preferred_gl_versions[]; +extern const int mpgl_min_required_gl_versions[]; // Returns whether or not a candidate GL version should be accepted or not // (based on the --opengl opts). Implementations may call this before diff --git a/video/out/opengl/context_glx.c b/video/out/opengl/context_glx.c index 4d9d993121..ee1fb30abf 100644 --- a/video/out/opengl/context_glx.c +++ b/video/out/opengl/context_glx.c @@ -312,8 +312,8 @@ static bool glx_init(struct ra_ctx *ctx) goto uninit; bool success = false; - for (int n = 0; mpgl_preferred_gl_versions[n]; n++) { - int version = mpgl_preferred_gl_versions[n]; + for (int n = 0; mpgl_min_required_gl_versions[n]; n++) { + int version = mpgl_min_required_gl_versions[n]; MP_VERBOSE(ctx, "Creating OpenGL %d.%d context...\n", MPGL_VER_P(version)); if (version >= 300) { diff --git a/video/out/opengl/egl_helpers.c b/video/out/opengl/egl_helpers.c index bcd85bfb73..2bdf3df0f2 100644 --- a/video/out/opengl/egl_helpers.c +++ b/video/out/opengl/egl_helpers.c @@ -184,8 +184,8 @@ static bool create_context(struct ra_ctx *ctx, EGLDisplay display, egl_ctx = eglCreateContext(display, config, EGL_NO_CONTEXT, attrs); } else { - for (int n = 0; mpgl_preferred_gl_versions[n]; n++) { - int ver = mpgl_preferred_gl_versions[n]; + for (int n = 0; mpgl_min_required_gl_versions[n]; n++) { + int ver = mpgl_min_required_gl_versions[n]; if (!ra_gl_ctx_test_version(ctx, ver, false)) continue; |