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.
This commit is contained in:
Dudemanguy 2020-10-14 15:38:55 -05:00
parent b60545bdc6
commit f5a094db04
2 changed files with 4 additions and 1 deletions

View File

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

View File

@ -120,7 +120,7 @@ static bool create_context(struct ra_ctx *ctx, EGLDisplay display,
EGL_RED_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_BLUE_SIZE, 8,
EGL_ALPHA_SIZE, 0,
EGL_ALPHA_SIZE, ctx->opts.want_alpha ? 1 : 0,
EGL_RENDERABLE_TYPE, rend,
EGL_NONE
};