diff options
| author | Stenzek <stenzek@gmail.com> | 2019-03-02 17:05:38 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2019-03-09 12:24:04 +1000 |
| commit | a218a794cb365690fe33099be14fbf3b08de5d33 (patch) | |
| tree | 29916e77ee951dbe9d4bd2220a1ab7edbe0cadc7 /Source/Core/VideoCommon/BPStructs.cpp | |
| parent | 6bc4bfd26af96de8642e75bbf644722c44baeb7b (diff) | |
FramebufferManager: Implement deferred EFB cache invalidation
Diffstat (limited to 'Source/Core/VideoCommon/BPStructs.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/BPStructs.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/BPStructs.cpp b/Source/Core/VideoCommon/BPStructs.cpp index 7712421f57..b234cec785 100644 --- a/Source/Core/VideoCommon/BPStructs.cpp +++ b/Source/Core/VideoCommon/BPStructs.cpp @@ -22,6 +22,7 @@ #include "VideoCommon/BPMemory.h" #include "VideoCommon/BoundingBox.h" #include "VideoCommon/Fifo.h" +#include "VideoCommon/FramebufferManager.h" #include "VideoCommon/GeometryShaderManager.h" #include "VideoCommon/PerfQueryBase.h" #include "VideoCommon/PixelEngine.h" @@ -178,6 +179,7 @@ static void BPWritten(const BPCmd& bp) { case 0x02: g_texture_cache->FlushEFBCopies(); + g_framebuffer_manager->InvalidatePeekCache(false); if (!Fifo::UseDeterministicGPUThread()) PixelEngine::SetFinish(); // may generate interrupt DEBUG_LOG(VIDEO, "GXSetDrawDone SetPEFinish (value: 0x%02X)", (bp.newvalue & 0xFFFF)); @@ -190,12 +192,14 @@ static void BPWritten(const BPCmd& bp) return; case BPMEM_PE_TOKEN_ID: // Pixel Engine Token ID g_texture_cache->FlushEFBCopies(); + g_framebuffer_manager->InvalidatePeekCache(false); if (!Fifo::UseDeterministicGPUThread()) PixelEngine::SetToken(static_cast<u16>(bp.newvalue & 0xFFFF), false); DEBUG_LOG(VIDEO, "SetPEToken 0x%04x", (bp.newvalue & 0xFFFF)); return; case BPMEM_PE_TOKEN_INT_ID: // Pixel Engine Interrupt Token ID g_texture_cache->FlushEFBCopies(); + g_framebuffer_manager->InvalidatePeekCache(false); if (!Fifo::UseDeterministicGPUThread()) PixelEngine::SetToken(static_cast<u16>(bp.newvalue & 0xFFFF), true); DEBUG_LOG(VIDEO, "SetPEToken + INT 0x%04x", (bp.newvalue & 0xFFFF)); |
