summaryrefslogtreecommitdiffstats
path: root/video/out
diff options
context:
space:
mode:
Diffstat (limited to 'video/out')
-rw-r--r--video/out/opengl/common.c10
-rw-r--r--video/out/opengl/common.h9
-rw-r--r--video/out/vo_opengl.c7
3 files changed, 15 insertions, 11 deletions
diff --git a/video/out/opengl/common.c b/video/out/opengl/common.c
index 21e749b9f3..ae4384ec30 100644
--- a/video/out/opengl/common.c
+++ b/video/out/opengl/common.c
@@ -535,12 +535,12 @@ static const struct mpgl_driver *const backends[] = {
#if HAVE_GL_COCOA
&mpgl_driver_cocoa,
#endif
-#if HAVE_GL_WIN32
- &mpgl_driver_w32,
-#endif
#if HAVE_EGL_ANGLE
&mpgl_driver_angle,
#endif
+#if HAVE_GL_WIN32
+ &mpgl_driver_w32,
+#endif
#if HAVE_GL_WAYLAND
&mpgl_driver_wayland,
#endif
@@ -630,8 +630,8 @@ static MPGLContext *init_backend(struct vo *vo, const struct mpgl_driver *driver
if (!ctx->gl->version && !ctx->gl->es)
goto cleanup;
- if (ctx->gl->es && vo->probing) {
- MP_INFO(ctx->vo, "Skipping experimental GLES support (use --vo=opengl).\n");
+ if (probing && ctx->gl->es && (vo_flags & VOFLAG_NO_GLES)) {
+ MP_VERBOSE(ctx->vo, "Skipping GLES backend.\n");
goto cleanup;
}
diff --git a/video/out/opengl/common.h b/video/out/opengl/common.h
index acae464643..8d5bbdbb6d 100644
--- a/video/out/opengl/common.h
+++ b/video/out/opengl/common.h
@@ -75,10 +75,11 @@ enum {
#define MPGL_VER_P(ver) MPGL_VER_GET_MAJOR(ver), MPGL_VER_GET_MINOR(ver)
enum {
- VOFLAG_GLES = 1 << 0, // Hint to prefer GLES2 if possible
- VOFLAG_GL_DEBUG = 1 << 1, // Hint to request debug OpenGL context
- VOFLAG_ALPHA = 1 << 2, // Hint to request alpha framebuffer
- VOFLAG_SW = 1 << 3, // Hint to accept a software GL renderer
+ VOFLAG_GLES = 1 << 0, // Hint to create a GLES2 context
+ VOFLAG_NO_GLES = 1 << 1, // Hint to create a desktop GL context
+ VOFLAG_GL_DEBUG = 1 << 2, // Hint to request debug OpenGL context
+ VOFLAG_ALPHA = 1 << 3, // Hint to request alpha framebuffer
+ VOFLAG_SW = 1 << 4, // Hint to accept a software GL renderer
};
struct MPGLContext;
diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c
index 1147aba79a..eb057d139f 100644
--- a/video/out/vo_opengl.c
+++ b/video/out/vo_opengl.c
@@ -397,8 +397,10 @@ static int preinit(struct vo *vo)
if (p->use_gl_debug)
vo_flags |= VOFLAG_GL_DEBUG;
- if (p->es)
+ if (p->es == 1)
vo_flags |= VOFLAG_GLES;
+ if (p->es == -1)
+ vo_flags |= VOFLAG_NO_GLES;
if (p->allow_sw)
vo_flags |= VOFLAG_SW;
@@ -462,7 +464,7 @@ static const struct m_option options[] = {
OPT_FLAG("debug", use_gl_debug, 0),
OPT_STRING_VALIDATE("backend", backend, 0, mpgl_validate_backend_opt),
OPT_FLAG("sw", allow_sw, 0),
- OPT_FLAG("es", es, 0),
+ OPT_CHOICE("es", es, 0, ({"no", -1}, {"auto", 0}, {"yes", 1})),
OPT_INTPAIR("check-pattern", opt_pattern, 0),
OPT_INTRANGE("vsync-fences", opt_vsync_fences, 0, 0, NUM_VSYNC_FENCES),
@@ -502,6 +504,7 @@ const struct vo_driver video_out_opengl_hq = {
.priv_size = sizeof(struct gl_priv),
.priv_defaults = &(const struct gl_priv){
.renderer_opts = (struct gl_video_opts *)&gl_video_opts_hq_def,
+ .es = -1,
},
.options = options,
};