mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-05-07 13:37:46 +00:00
vk: Handle WAW and RAW hazards when performing "flush" operations
This commit is contained in:
parent
8ab0ceaa67
commit
59468f1e1e
1 changed files with 9 additions and 1 deletions
|
|
@ -100,7 +100,7 @@ namespace vk
|
|||
auto dma_sync_region = valid_range;
|
||||
dma_mapping_handle dma_mapping = { 0, nullptr };
|
||||
|
||||
auto dma_sync = [&dma_sync_region, &dma_mapping](bool load, bool force = false)
|
||||
auto dma_sync = [&](bool load, bool force = false)
|
||||
{
|
||||
if (dma_mapping.second && !force)
|
||||
{
|
||||
|
|
@ -335,6 +335,14 @@ namespace vk
|
|||
vkCmdCopyImageToBuffer(cmd, src->value, src->current_layout, dma_mapping.second->value, 1, ®ion);
|
||||
}
|
||||
|
||||
// Post-transfer barrier on dma layer
|
||||
vk::insert_buffer_memory_barrier(
|
||||
cmd, dma_mapping.second->value,
|
||||
dma_mapping.first, dma_sync_region.length(),
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT
|
||||
);
|
||||
|
||||
src->pop_layout(cmd);
|
||||
|
||||
VkBufferMemoryBarrier2KHR mem_barrier =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue