diff options
author | Dudemanguy <random342@airmail.cc> | 2021-11-04 10:01:24 -0500 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2021-11-04 15:59:56 +0000 |
commit | 662c793a557925319493297de8c941a636f18d73 (patch) | |
tree | 80d136570035e0a7c098035c24852db5eeeb60c2 /video/out/vulkan | |
parent | acde63f05ade3f4da8424bb3b764966e9f7a3fc3 (diff) | |
download | mpv-662c793a557925319493297de8c941a636f18d73.tar.bz2 mpv-662c793a557925319493297de8c941a636f18d73.tar.xz |
vo_gpu_next: call start_frame in vulkan/context.c
In practice, this is for wayland. vo_gpu_next doesn't check the
check_visible parameter since it didn't descend into the
vulkan/context.c file when starting a frame. To make this happen, just
call the start_frame function pointer but pass NULL as the ra_fbo. In
there, we can do the visibility checks and after that bail out of the
start_frame function if ra_fbo is NULL.
Diffstat (limited to 'video/out/vulkan')
-rw-r--r-- | video/out/vulkan/context.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/video/out/vulkan/context.c b/video/out/vulkan/context.c index bcc52f46f3..216e653c82 100644 --- a/video/out/vulkan/context.c +++ b/video/out/vulkan/context.c @@ -239,11 +239,15 @@ static bool start_frame(struct ra_swapchain *sw, struct ra_fbo *out_fbo) { struct priv *p = sw->priv; struct pl_swapchain_frame frame; + bool visible = true; if (p->params.check_visible) visible = p->params.check_visible(sw->ctx); - if (!visible) - return false; + + // If out_fbo is NULL, this was called from vo_gpu_next. Bail out. + if (out_fbo == NULL || !visible) + return visible; + if (!pl_swapchain_start_frame(p->vk->swapchain, &frame)) return false; if (!mppl_wrap_tex(sw->ctx->ra, frame.fbo, &p->proxy_tex)) |