diff --git a/examples/oit/oit.cpp b/examples/oit/oit.cpp index 2da04e10776d54417f15f5f77c28e050eb6b197e..2743f974291beb45ed8bc466a3f041f1de4736fa 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];