diff options
| author | Robin Kertels <robin.kertels@gmail.com> | 2022-09-26 23:41:56 +0200 |
|---|---|---|
| committer | Robin Kertels <robin.kertels@gmail.com> | 2022-10-01 18:08:38 +0200 |
| commit | 779fe13e62e6c0e9d591f2cb33d00a89191dd6a6 (patch) | |
| tree | 5f7031e7f6e5ab8cb022ba05692079fb94551600 /Source/Core/VideoCommon/BPStructs.cpp | |
| parent | c196c47e8119de714124d0720f0aead7d9b3cca6 (diff) | |
VideoCommon: Update EFB peek cache on draw done and tokens
Massively improves performance in Mario Galaxy on Android.
Diffstat (limited to 'Source/Core/VideoCommon/BPStructs.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/BPStructs.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
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<u16>(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<u16>(bp.newvalue & 0xFFFF), true, cycles_into_future); DEBUG_LOG_FMT(VIDEO, "SetPEToken + INT {:#06X}", bp.newvalue & 0xFFFF); |
