From f7e7d8f18372672ef552fb6b0a11deab2145e4c3 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Sat, 14 Feb 2026 17:57:42 +0100 Subject: [PATCH] render/vulkan: fix missing DMA-BUF implicit read fence for textures When we're reading from a DMA-BUF texture using implicit sync, we need to (1) wait for any writer to be done and (2) prevent any writers from mutating the texture while we're still reading. We were doing (1) but not (2). Fix this by calling dmabuf_import_sync_file() with DMA_BUF_SYNC_READ for all DMA-BUF textures we've used in the render pass. (cherry picked from commit 43b37e34d662ca893ebaae6e813634ee216c352f) --- render/vulkan/renderer.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/render/vulkan/renderer.c b/render/vulkan/renderer.c index 168668e82..d9d8876cd 100644 --- a/render/vulkan/renderer.c +++ b/render/vulkan/renderer.c @@ -1045,6 +1045,13 @@ bool vulkan_sync_render_pass_release(struct wlr_vk_renderer *renderer, if (!buffer_import_sync_file(pass->render_buffer->wlr_buffer, DMA_BUF_SYNC_WRITE, sync_file_fd)) { goto out; } + + struct wlr_vk_render_pass_texture *pass_texture; + wl_array_for_each(pass_texture, &pass->textures) { + if (!buffer_import_sync_file(pass_texture->texture->buffer, DMA_BUF_SYNC_READ, sync_file_fd)) { + goto out; + } + } } ok = true;