aboutsummaryrefslogtreecommitdiffhomepage
path: root/video
diff options
context:
space:
mode:
authorGravatar wm4 <wm4@nowhere>2015-11-21 17:33:32 +0100
committerGravatar wm4 <wm4@nowhere>2015-11-21 18:17:14 +0100
commitd5df90a295904e05a7bc26db31e8334b6c5c0e6e (patch)
treed2a1eeb922c8e92180710e0fe2ba37163f59b6f6 /video
parent3245b7f275ba9bd59583bb05474619cf2817ecc2 (diff)
vo_opengl: use ANGLE by default if available (except for "hq" preset)
Running mpv with default config will now pick up ANGLE by default. Since some think ANGLE is still not good enough for hq features, extend the "es" option to reject GLES backends, and add to to the opengl-hq preset. One consequence is that mpv will by default use libswscale to convert 10 bit video to 8 bit, before it reaches the VO.
Diffstat (limited to 'video')
-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,
};