diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index e6ca0d546..63cbbb2b5 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -1309,8 +1309,17 @@ void Rasterizer::StartPredication(VAddr addr, bool draw_if_visible, bool wait_fo .offset = index * sizeof(u32), .size = sizeof(u32), }; + + const vk::MemoryBarrier2 ib_barrier{ + .srcStageMask = vk::PipelineStageFlagBits2::eCopy, + .srcAccessMask = vk::AccessFlagBits2::eTransferWrite, + .dstStageMask = vk::PipelineStageFlagBits2::eConditionalRenderingEXT, + .dstAccessMask = vk::AccessFlagBits2::eConditionalRenderingReadEXT, + }; cmdbuf.pipelineBarrier2(vk::DependencyInfo{ .dependencyFlags = vk::DependencyFlagBits::eByRegion, + .memoryBarrierCount = 1, + .pMemoryBarriers = &ib_barrier, .bufferMemoryBarrierCount = 1, .pBufferMemoryBarriers = &pre_barrier, });