summaryrefslogtreecommitdiffstats
path: root/video/out/vulkan/context.c
diff options
context:
space:
mode:
authorDudemanguy <random342@airmail.cc>2021-11-04 10:01:24 -0500
committerDudemanguy <random342@airmail.cc>2021-11-04 15:59:56 +0000
commit662c793a557925319493297de8c941a636f18d73 (patch)
tree80d136570035e0a7c098035c24852db5eeeb60c2 /video/out/vulkan/context.c
parentacde63f05ade3f4da8424bb3b764966e9f7a3fc3 (diff)
downloadmpv-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/context.c')
-rw-r--r--video/out/vulkan/context.c8
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))