diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index aca39e77d..d3ad0e319 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -474,7 +474,7 @@ bool Rasterizer::BindResources(const Pipeline* pipeline) { pipeline->BindResources(set_writes, buffer_barriers, push_data); - if (uses_dma) { + if (uses_dma && !fault_process_pending) { fault_process_pending = true; // We only use fault buffer for DMA right now. { @@ -483,7 +483,7 @@ bool Rasterizer::BindResources(const Pipeline* pipeline) { buffer_cache.SynchronizeRange(range.lower(), range.upper() - range.lower()); } } - buffer_cache.MemoryBarrier(); + // buffer_cache.MemoryBarrier(); } fault_process_pending |= uses_dma; diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp index 73a4d9a5a..c29364c55 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.cpp +++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp @@ -91,11 +91,8 @@ void Scheduler::Wait(u64 tick) { } master_semaphore.Wait(tick); - // Only apply pending operations until the current tick. - while (!pending_ops.empty() && pending_ops.front().gpu_tick <= tick) { - pending_ops.front().callback(); - pending_ops.pop(); - } + // We should apply pending operations until the tick we are waiting for. + // but that may introduce unpredictable timing issues. } void Scheduler::AllocateWorkerCommandBuffers() {