From cff60f5ba0ba30dd07aeeac00cd5c0b09a5d09b7 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 24 Mar 2019 15:02:08 +1000 Subject: [PATCH] FramebufferManager: Only clear tile array when valid When looking into the Faron Woods fifolog, I noticed this code was quite high in the profile (~10%). Clearing 4096 entries from the vector isn't needed every draw, we only need to do this when the cache was actually valid in the first place. Should provide a slight general performance boost. --- Source/Core/VideoCommon/FramebufferManager.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Source/Core/VideoCommon/FramebufferManager.cpp b/Source/Core/VideoCommon/FramebufferManager.cpp index c3c41af2c7..4f14ebef72 100644 --- a/Source/Core/VideoCommon/FramebufferManager.cpp +++ b/Source/Core/VideoCommon/FramebufferManager.cpp @@ -407,15 +407,19 @@ void FramebufferManager::InvalidatePeekCache(bool forced) { if (forced || m_efb_color_cache.out_of_date) { + if (m_efb_color_cache.valid) + std::fill(m_efb_color_cache.tiles.begin(), m_efb_color_cache.tiles.end(), false); + m_efb_color_cache.valid = false; m_efb_color_cache.out_of_date = false; - std::fill(m_efb_color_cache.tiles.begin(), m_efb_color_cache.tiles.end(), false); } if (forced || m_efb_depth_cache.out_of_date) { + if (m_efb_depth_cache.valid) + std::fill(m_efb_depth_cache.tiles.begin(), m_efb_depth_cache.tiles.end(), false); + m_efb_depth_cache.valid = false; m_efb_depth_cache.out_of_date = false; - std::fill(m_efb_depth_cache.tiles.begin(), m_efb_depth_cache.tiles.end(), false); } }