From 42b542d19040ebb531bc56b4e828c4bfcf517fe9 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 7 Sep 2025 00:17:11 +0200 Subject: [PATCH] Improve recent changes to memory barriers on Vulkan --- Source/Engine/GraphicsDevice/Vulkan/GPUContextVulkan.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUContextVulkan.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUContextVulkan.cpp index 45dccf467..2db4e202a 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUContextVulkan.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUContextVulkan.cpp @@ -345,7 +345,7 @@ void GPUContextVulkan::AddMemoryBarrier() memoryBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; memoryBarrier.dstAccessMask = VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_MEMORY_WRITE_BIT; _barriers.SourceStage |= VK_PIPELINE_STAGE_TRANSFER_BIT; - _barriers.DestStage |= VK_PIPELINE_STAGE_ALL_COMMANDS_BIT; + _barriers.DestStage |= VK_PIPELINE_STAGE_TRANSFER_BIT | VK_PIPELINE_STAGE_ALL_COMMANDS_BIT; #if !VK_ENABLE_BARRIERS_BATCHING // Auto-flush without batching @@ -1375,6 +1375,8 @@ void GPUContextVulkan::UpdateBuffer(GPUBuffer* buffer, const void* data, uint32 const auto bufferVulkan = static_cast(buffer); // Transition resource + if (_pass == 0) + AddMemoryBarrier(); AddBufferBarrier(bufferVulkan, VK_ACCESS_TRANSFER_WRITE_BIT); FlushBarriers();