From 2aeef063c110f4aa870e1534038184c77b15e442 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Tue, 22 Jan 2019 15:57:57 +0100 Subject: [PATCH] [dxvk] Properly support TOP_OF_PIPE and BOTTOM_OF_PIPE for barriers --- src/dxvk/dxvk_barrier.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/dxvk/dxvk_barrier.cpp b/src/dxvk/dxvk_barrier.cpp index 34734e3a..0ad2a649 100644 --- a/src/dxvk/dxvk_barrier.cpp +++ b/src/dxvk/dxvk_barrier.cpp @@ -16,6 +16,10 @@ namespace dxvk { m_srcStages |= srcStages; m_dstStages |= dstStages; + if (srcStages == VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT + || dstStages == VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT) + access.set(DxvkAccess::Write); + if (access.test(DxvkAccess::Write)) { VkBufferMemoryBarrier barrier; barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; @@ -48,7 +52,9 @@ namespace dxvk { m_srcStages |= srcStages; m_dstStages |= dstStages; - if (srcLayout != dstLayout) + if (srcStages == VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT + || dstStages == VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT + || srcLayout != dstLayout) access.set(DxvkAccess::Write); if (access.test(DxvkAccess::Write)) {