From 901a0fe93a6bc92aa6f8ed8a39e5cff4749e6f59 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Tue, 8 Oct 2024 19:22:24 +0200 Subject: [PATCH] vulkan: attach last-use-syncfile to internal framebuffers --- src/gfx_apis/vulkan/renderer.rs | 9 ++++++++- src/gfx_apis/vulkan/shm_image.rs | 2 +- src/gfx_apis/vulkan/transfer.rs | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/gfx_apis/vulkan/renderer.rs b/src/gfx_apis/vulkan/renderer.rs index 053877ad..83dff5da 100644 --- a/src/gfx_apis/vulkan/renderer.rs +++ b/src/gfx_apis/vulkan/renderer.rs @@ -824,11 +824,18 @@ impl VulkanRenderer { if attach_async_shm_sync_file { if let VulkanImageMemory::Internal(shm) = &texture.tex.ty { if let Some(data) = &shm.async_data { - data.last_sample.set(Some(sync_file.clone())); + data.last_gfx_use.set(Some(sync_file.clone())); } } } } + if attach_async_shm_sync_file { + if let VulkanImageMemory::Internal(shm) = &fb.ty { + if let Some(data) = &shm.async_data { + data.last_gfx_use.set(Some(sync_file.clone())); + } + } + } import(fb, fb_release_sync, None, DMA_BUF_SYNC_WRITE); } diff --git a/src/gfx_apis/vulkan/shm_image.rs b/src/gfx_apis/vulkan/shm_image.rs index 86155e2b..8f84c467 100644 --- a/src/gfx_apis/vulkan/shm_image.rs +++ b/src/gfx_apis/vulkan/shm_image.rs @@ -431,7 +431,7 @@ impl VulkanRenderer { callback_id: Cell::new(0), regions: Default::default(), cpu: cpu.clone(), - last_sample: Default::default(), + last_gfx_use: Default::default(), data_copied: Default::default(), }); } diff --git a/src/gfx_apis/vulkan/transfer.rs b/src/gfx_apis/vulkan/transfer.rs index 9062df13..61dd8cbd 100644 --- a/src/gfx_apis/vulkan/transfer.rs +++ b/src/gfx_apis/vulkan/transfer.rs @@ -46,7 +46,7 @@ pub struct VulkanShmImageAsyncData { pub(super) callback_id: Cell, pub(super) regions: RefCell>>, pub(super) cpu: Rc, - pub(super) last_sample: Cell>, + pub(super) last_gfx_use: Cell>, pub(super) data_copied: Cell, } @@ -215,7 +215,7 @@ impl VulkanShmImage { img.renderer.check_defunct()?; let Some(transfer_queue_idx) = img.renderer.device.distinct_transfer_queue_family_idx else { - let Some(sync_file) = data.last_sample.take() else { + let Some(sync_file) = data.last_gfx_use.take() else { img.queue_state.set(QueueState::Released { to: QueueFamily::Transfer, });