mirror of
https://github.com/mpv-player/mpv
synced 2025-01-26 01:23:17 +00:00
vo_opengl: probe for EGL by default
Normally, we prefer GLX on X11. But for the VAAPI EGL interop, we obviously want EGL. Since nvidia does not provide EGL with desktop GL yet, we can leave it to the autoprobing. Just make sure some failure messages don't unnecessarily show up in the nvidia case. This breaks VAAPI GLX interop by default, but I don't care much. If you use --hwdec=auto (which you should if you want hw decoding), this should fallback to vaapi-copy instead.
This commit is contained in:
parent
0aa548457f
commit
375886c777
@ -533,12 +533,12 @@ static const struct backend backends[] = {
|
||||
#if HAVE_GL_WAYLAND
|
||||
{"wayland", mpgl_set_backend_wayland},
|
||||
#endif
|
||||
#if HAVE_GL_X11
|
||||
{.driver = &mpgl_driver_x11},
|
||||
#endif
|
||||
#if HAVE_EGL_X11
|
||||
{.driver = &mpgl_driver_x11egl},
|
||||
#endif
|
||||
#if HAVE_GL_X11
|
||||
{.driver = &mpgl_driver_x11},
|
||||
#endif
|
||||
};
|
||||
|
||||
int mpgl_find_backend(const char *name)
|
||||
|
@ -123,6 +123,7 @@ static int mpegl_init(struct MPGLContext *ctx, int flags)
|
||||
struct priv *p = ctx->priv;
|
||||
struct vo *vo = ctx->vo;
|
||||
bool es = flags & VOFLAG_GLES;
|
||||
int msgl = vo->probing ? MSGL_V : MSGL_FATAL;
|
||||
|
||||
if (!vo_x11_init(vo))
|
||||
goto uninit;
|
||||
@ -130,13 +131,13 @@ static int mpegl_init(struct MPGLContext *ctx, int flags)
|
||||
p->x_display = vo->x11->display;
|
||||
|
||||
if (!eglBindAPI(es ? EGL_OPENGL_ES_API : EGL_OPENGL_API)) {
|
||||
MP_FATAL(vo, "Could not bind API (%s).\n", es ? "GLES" : "GL");
|
||||
mp_msg(vo->log, msgl, "Could not bind API (%s).\n", es ? "GLES" : "GL");
|
||||
goto uninit;
|
||||
}
|
||||
|
||||
p->egl_display = eglGetDisplay(vo->x11->display);
|
||||
if (!eglInitialize(p->egl_display, NULL, NULL)) {
|
||||
MP_FATAL(vo, "Could not initialize EGL.\n");
|
||||
mp_msg(vo->log, msgl, "Could not initialize EGL.\n");
|
||||
goto uninit;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user