From 779fe13e62e6c0e9d591f2cb33d00a89191dd6a6 Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Mon, 26 Sep 2022 23:41:56 +0200 Subject: VideoCommon: Update EFB peek cache on draw done and tokens Massively improves performance in Mario Galaxy on Android. --- Source/Core/VideoCommon/BPStructs.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Source/Core/VideoCommon/BPStructs.cpp') diff --git a/Source/Core/VideoCommon/BPStructs.cpp b/Source/Core/VideoCommon/BPStructs.cpp index 35f2f23ffe..bf0438a74b 100644 --- a/Source/Core/VideoCommon/BPStructs.cpp +++ b/Source/Core/VideoCommon/BPStructs.cpp @@ -181,6 +181,7 @@ static void BPWritten(const BPCmd& bp, int cycles_into_future) INCSTAT(g_stats.this_frame.num_draw_done); g_texture_cache->FlushEFBCopies(); g_framebuffer_manager->InvalidatePeekCache(false); + g_framebuffer_manager->RefreshPeekCache(); if (!Fifo::UseDeterministicGPUThread()) PixelEngine::SetFinish(cycles_into_future); // may generate interrupt DEBUG_LOG_FMT(VIDEO, "GXSetDrawDone SetPEFinish (value: {:#04X})", bp.newvalue & 0xFFFF); @@ -195,6 +196,7 @@ static void BPWritten(const BPCmd& bp, int cycles_into_future) INCSTAT(g_stats.this_frame.num_token); g_texture_cache->FlushEFBCopies(); g_framebuffer_manager->InvalidatePeekCache(false); + g_framebuffer_manager->RefreshPeekCache(); if (!Fifo::UseDeterministicGPUThread()) PixelEngine::SetToken(static_cast(bp.newvalue & 0xFFFF), false, cycles_into_future); DEBUG_LOG_FMT(VIDEO, "SetPEToken {:#06X}", bp.newvalue & 0xFFFF); @@ -203,6 +205,7 @@ static void BPWritten(const BPCmd& bp, int cycles_into_future) INCSTAT(g_stats.this_frame.num_token_int); g_texture_cache->FlushEFBCopies(); g_framebuffer_manager->InvalidatePeekCache(false); + g_framebuffer_manager->RefreshPeekCache(); if (!Fifo::UseDeterministicGPUThread()) PixelEngine::SetToken(static_cast(bp.newvalue & 0xFFFF), true, cycles_into_future); DEBUG_LOG_FMT(VIDEO, "SetPEToken + INT {:#06X}", bp.newvalue & 0xFFFF); -- cgit v1.2.3