summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexManagerBase.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2019-03-02 17:05:38 +1000
committerStenzek <stenzek@gmail.com>2019-03-09 12:24:04 +1000
commita218a794cb365690fe33099be14fbf3b08de5d33 (patch)
tree29916e77ee951dbe9d4bd2220a1ab7edbe0cadc7 /Source/Core/VideoCommon/VertexManagerBase.cpp
parent6bc4bfd26af96de8642e75bbf644722c44baeb7b (diff)
FramebufferManager: Implement deferred EFB cache invalidation
Diffstat (limited to 'Source/Core/VideoCommon/VertexManagerBase.cpp')
-rw-r--r--Source/Core/VideoCommon/VertexManagerBase.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/Source/Core/VideoCommon/VertexManagerBase.cpp b/Source/Core/VideoCommon/VertexManagerBase.cpp
index bbc355a98c..06168c6cec 100644
--- a/Source/Core/VideoCommon/VertexManagerBase.cpp
+++ b/Source/Core/VideoCommon/VertexManagerBase.cpp
@@ -99,8 +99,7 @@ u32 VertexManagerBase::GetRemainingSize() const
DataReader VertexManagerBase::PrepareForAdditionalData(int primitive, u32 count, u32 stride,
bool cullall)
{
- // Flush all EFB pokes and invalidate the peek cache.
- g_framebuffer_manager->InvalidatePeekCache();
+ // Flush all EFB pokes. Since the buffer is shared, we can't draw pokes+primitives concurrently.
g_framebuffer_manager->FlushEFBPokes();
// The SSE vertex loader can write up to 4 bytes past the end
@@ -449,6 +448,9 @@ void VertexManagerBase::Flush()
g_perf_query->DisableQuery(bpmem.zcontrol.early_ztest ? PQG_ZCOMP_ZCOMPLOC : PQG_ZCOMP);
OnDraw();
+
+ // The EFB cache is now potentially stale.
+ g_framebuffer_manager->FlagPeekCacheAsOutOfDate();
}
}