From a218a794cb365690fe33099be14fbf3b08de5d33 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 2 Mar 2019 17:05:38 +1000 Subject: FramebufferManager: Implement deferred EFB cache invalidation --- Source/Core/VideoCommon/VertexManagerBase.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoCommon/VertexManagerBase.cpp') 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(); } } -- cgit v1.2.3