From cd6882395d9313c1851bb133aa9186f695ce7d72 Mon Sep 17 00:00:00 2001 From: Sascha Willems Date: Sun, 28 Nov 2021 21:01:00 +0100 Subject: [PATCH] Added barrier between fragment shader write and read --- examples/oit/oit.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/oit/oit.cpp b/examples/oit/oit.cpp index 2da04e10..2743f974 100644 --- a/examples/oit/oit.cpp +++ b/examples/oit/oit.cpp @@ -604,6 +604,12 @@ private: // Make a pipeline barrier to guarantee the geometry pass is done vkCmdPipelineBarrier(drawCmdBuffers[i], VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0, 0, nullptr, 0, nullptr, 0, nullptr); + // We need a barrier to make sure all writes are finished before starting to write again + memoryBarrier = vks::initializers::memoryBarrier(); + memoryBarrier.srcAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT; + memoryBarrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT; + vkCmdPipelineBarrier(drawCmdBuffers[i], VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0, 1, &memoryBarrier, 0, nullptr, 0, nullptr); + // Begin the color render pass renderPassBeginInfo.renderPass = renderPass; renderPassBeginInfo.framebuffer = frameBuffers[i];