From 5624dd6d3982aebab498dcc99dafbcfc00983b4f Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Fri, 9 Dec 2022 20:01:25 +0100 Subject: VideoCommon/Fifo: Refactor to class, move to Core::System. --- Source/Core/VideoCommon/BPStructs.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'Source/Core/VideoCommon/BPStructs.cpp') diff --git a/Source/Core/VideoCommon/BPStructs.cpp b/Source/Core/VideoCommon/BPStructs.cpp index 1bc9f69150..cc390a5d79 100644 --- a/Source/Core/VideoCommon/BPStructs.cpp +++ b/Source/Core/VideoCommon/BPStructs.cpp @@ -179,14 +179,17 @@ static void BPWritten(const BPCmd& bp, int cycles_into_future) switch (bp.newvalue & 0xFF) { case 0x02: + { INCSTAT(g_stats.this_frame.num_draw_done); g_texture_cache->FlushEFBCopies(); g_framebuffer_manager->InvalidatePeekCache(false); g_framebuffer_manager->RefreshPeekCache(); - if (!Fifo::UseDeterministicGPUThread()) + auto& system = Core::System::GetInstance(); + if (!system.GetFifo().UseDeterministicGPUThread()) PixelEngine::SetFinish(cycles_into_future); // may generate interrupt DEBUG_LOG_FMT(VIDEO, "GXSetDrawDone SetPEFinish (value: {:#04X})", bp.newvalue & 0xFFFF); return; + } default: WARN_LOG_FMT(VIDEO, "GXSetDrawDone ??? (value {:#04X})", bp.newvalue & 0xFFFF); @@ -194,23 +197,29 @@ static void BPWritten(const BPCmd& bp, int cycles_into_future) } return; case BPMEM_PE_TOKEN_ID: // Pixel Engine Token ID + { INCSTAT(g_stats.this_frame.num_token); g_texture_cache->FlushEFBCopies(); g_framebuffer_manager->InvalidatePeekCache(false); g_framebuffer_manager->RefreshPeekCache(); - if (!Fifo::UseDeterministicGPUThread()) + auto& system = Core::System::GetInstance(); + if (!system.GetFifo().UseDeterministicGPUThread()) PixelEngine::SetToken(static_cast(bp.newvalue & 0xFFFF), false, cycles_into_future); DEBUG_LOG_FMT(VIDEO, "SetPEToken {:#06X}", bp.newvalue & 0xFFFF); return; + } case BPMEM_PE_TOKEN_INT_ID: // Pixel Engine Interrupt Token ID + { INCSTAT(g_stats.this_frame.num_token_int); g_texture_cache->FlushEFBCopies(); g_framebuffer_manager->InvalidatePeekCache(false); g_framebuffer_manager->RefreshPeekCache(); - if (!Fifo::UseDeterministicGPUThread()) + auto& system = Core::System::GetInstance(); + if (!system.GetFifo().UseDeterministicGPUThread()) PixelEngine::SetToken(static_cast(bp.newvalue & 0xFFFF), true, cycles_into_future); DEBUG_LOG_FMT(VIDEO, "SetPEToken + INT {:#06X}", bp.newvalue & 0xFFFF); return; + } // ------------------------ // EFB copy command. This copies a rectangle from the EFB to either RAM in a texture format or to -- cgit v1.2.3