1
mirror of https://github.com/mpv-player/mpv synced 2024-10-22 08:51:57 +02:00

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.
This commit is contained in:
wm4 2015-11-21 17:33:32 +01:00
parent 3245b7f275
commit d5df90a295
4 changed files with 29 additions and 14 deletions

View File

@ -777,6 +777,10 @@ Available video output drivers are:
Cocoa/OS X
win
Win32/WGL
angle
Direct3D11 through the OpenGL ES translation layer ANGLE. This
supports almost everything the ``win`` backend does, except ICC
profiles, high bit depth video input, and the ``nnedi3`` prescaler.
x11
X11/GLX
wayland
@ -786,8 +790,15 @@ Available video output drivers are:
x11egl
X11/EGL
``es``
Force or prefer GLES2/3 over desktop OpenGL, if supported.
``es=<mode>``
Select whether to use GLES:
yes
Try to prefer ES over Desktop GL
no
Try to prefer desktop GL over ES
auto
Use the default for each backend (default)
``fbo-format=<fmt>``
Selects the internal format of textures used for FBOs. The format can
@ -955,7 +966,7 @@ Available video output drivers are:
This is equivalent to::
--vo=opengl:scale=spline36:cscale=spline36:dscale=mitchell:dither-depth=auto:correct-downscaling:sigmoid-upscaling:pbo:deband
--vo=opengl:scale=spline36:cscale=spline36:dscale=mitchell:dither-depth=auto:correct-downscaling:sigmoid-upscaling:pbo:deband:es=no
Note that some cheaper LCDs do dithering that gravely interferes with
``opengl``'s dithering. Disabling dithering with ``dither-depth=no`` helps.

View File

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

View File

@ -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;

View File

@ -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,
};