From 7f0834c91992c3726f1ba36f32f85b97aaa1ece2 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Sat, 12 Aug 2017 23:10:21 -0500 Subject: Add 'immediate xfb' which reduces xfb latency at the cost of graphical errors --- Source/Core/VideoCommon/BPStructs.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoCommon/BPStructs.cpp') diff --git a/Source/Core/VideoCommon/BPStructs.cpp b/Source/Core/VideoCommon/BPStructs.cpp index 183f7d4f20..22e808fe90 100644 --- a/Source/Core/VideoCommon/BPStructs.cpp +++ b/Source/Core/VideoCommon/BPStructs.cpp @@ -12,6 +12,7 @@ #include "Common/StringUtil.h" #include "Common/Thread.h" #include "Core/ConfigManager.h" +#include "Core/CoreTiming.h" #include "Core/FifoPlayer/FifoPlayer.h" #include "Core/FifoPlayer/FifoRecorder.h" #include "Core/HW/Memmap.h" @@ -266,9 +267,17 @@ static void BPWritten(const BPCmd& bp) // This stays in to signal end of a "frame" g_renderer->RenderToXFB(destAddr, srcRect, destStride, height, s_gammaLUT[PE_copy.gamma]); - if (FifoPlayer::GetInstance().IsRunningWithFakeVideoInterfaceUpdates()) + if (g_ActiveConfig.bImmediateXFB) { - VideoInterface::FakeVIUpdate(destAddr, srcRect.GetWidth(), height); + // below div two to convert from bytes to pixels - it expects width, not stride + g_renderer->Swap(destAddr, destStride / 2, destStride / 2, height, false, srcRect, CoreTiming::GetTicks(), s_gammaLUT[PE_copy.gamma]); + } + else + { + if (FifoPlayer::GetInstance().IsRunningWithFakeVideoInterfaceUpdates()) + { + VideoInterface::FakeVIUpdate(destAddr, srcRect.GetWidth(), height); + } } } -- cgit v1.2.3