diff options
author | Dudemanguy <random342@airmail.cc> | 2020-10-14 15:38:55 -0500 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2020-10-15 13:44:07 +0000 |
commit | f5a094db047ee0162774301a2ce4ed685ca9d539 (patch) | |
tree | 818442d1269680235e5223981fae146742e3fde1 /video/out/opengl/context_x11egl.c | |
parent | b60545bdc6a820112b04dbe8b54d93816efa5a05 (diff) | |
download | mpv-f5a094db047ee0162774301a2ce4ed685ca9d539.tar.bz2 mpv-f5a094db047ee0162774301a2ce4ed685ca9d539.tar.xz |
vo_gpu: EGL: hack for alpha on different platforms
7fb972f fixed transparency on x11/EGL/Mesa but happened to also break it
for wayland and nvidia. Ideally on wayland, you should just be able to
pick the right EGLConfig that has alpha but this doesn't seem to work
because reasons. So just go back to setting the EGL_ALPHA_SIZE bit if
the user asks for alpha. Apparently this worked before for nvidia as
well. The hack is to just run an eglQueryString in the x11egl context.
If it picks up Mesa as the EGL_VENDOR, then force ctx->opts.want_alpha
to 0 and let pick_xrgba_config take care of the rest.
Diffstat (limited to 'video/out/opengl/context_x11egl.c')
-rw-r--r-- | video/out/opengl/context_x11egl.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/video/out/opengl/context_x11egl.c b/video/out/opengl/context_x11egl.c index 812718a647..321df4039d 100644 --- a/video/out/opengl/context_x11egl.c +++ b/video/out/opengl/context_x11egl.c @@ -116,6 +116,9 @@ static bool mpegl_init(struct ra_ctx *ctx) .refine_config = ctx->opts.want_alpha ? pick_xrgba_config : NULL, }; + if (!strcmp(eglQueryString(p->egl_display, EGL_VENDOR), "Mesa Project")) + ctx->opts.want_alpha = 0; + EGLConfig config; if (!mpegl_create_context_cb(ctx, p->egl_display, cb, &p->egl_context, &config)) goto uninit; |