From 02e4786e04acdfdda944c962c01047c03dd58b52 Mon Sep 17 00:00:00 2001 From: pezcode Date: Sun, 7 Mar 2021 03:56:55 +0100 Subject: [PATCH] Vulkan: fix sync hazards (#2419) - write-after-write when blitting to the same image - missing barrier between compute dispatches if a view has no draws --- src/renderer_vk.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 0c68eec46..0cc4388ec 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -6958,6 +6958,12 @@ VK_DESTROY , &blitInfo , filter ); + + setMemoryBarrier( + m_commandBuffer + , VK_PIPELINE_STAGE_TRANSFER_BIT + , VK_PIPELINE_STAGE_TRANSFER_BIT + ); } if (oldSrcLayout != VK_IMAGE_LAYOUT_UNDEFINED) @@ -7131,8 +7137,8 @@ VK_DESTROY } // renderpass external subpass dependencies handle graphics -> compute and compute -> graphics - // but not compute -> compute - if (wasCompute && isCompute) + // but not compute -> compute (possibly also across views if they contain no draw calls) + if (wasCompute) { setMemoryBarrier( m_commandBuffer