1
0
Fork 0
forked from wry/wry

Merge pull request #289 from mahkoh/jorth/transfer-download-sync-file

vulkan: attach last-use-syncfile to internal framebuffers
This commit is contained in:
mahkoh 2024-10-09 12:19:05 +02:00 committed by GitHub
commit 4694d3dc92
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 4 deletions

View file

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

View file

@ -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(),
});
}

View file

@ -46,7 +46,7 @@ pub struct VulkanShmImageAsyncData {
pub(super) callback_id: Cell<u64>,
pub(super) regions: RefCell<Vec<BufferImageCopy2<'static>>>,
pub(super) cpu: Rc<CpuWorker>,
pub(super) last_sample: Cell<Option<SyncFile>>,
pub(super) last_gfx_use: Cell<Option<SyncFile>>,
pub(super) data_copied: Cell<bool>,
}
@ -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,
});