From 14ced85d85d0f57984be3c0579c147aba496b837 Mon Sep 17 00:00:00 2001 From: skidau Date: Mon, 12 Jan 2015 19:40:43 +1100 Subject: [PATCH] Made the CPU thread wait for the GPU thread to swap, when XFB is enabled. May fix some of the "FIFO is overflowed by GatherPipe ! CPU thread is too fast!" errors. --- Source/Core/VideoCommon/MainBase.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Source/Core/VideoCommon/MainBase.cpp b/Source/Core/VideoCommon/MainBase.cpp index 40d2f57f2044..b5c6cdebf9b8 100644 --- a/Source/Core/VideoCommon/MainBase.cpp +++ b/Source/Core/VideoCommon/MainBase.cpp @@ -125,6 +125,12 @@ void VideoBackendHardware::Video_EndField() if (s_BackendInitialized) { SyncGPU(SYNC_GPU_SWAP); + + // Wait until the GPU thread has swapped. Prevents FIFO overflows. + while (g_ActiveConfig.bUseXFB && SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread && s_swapRequested.IsSet()) + { + Common::YieldCPU(); + } s_swapRequested.Set(); } }