Skip to content

Commit

Permalink
FramebufferManager: Only clear tile array when valid
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
stenzek committed Mar 24, 2019
1 parent c89139d commit cff60f5
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions Source/Core/VideoCommon/FramebufferManager.cpp
Expand Up @@ -407,15 +407,19 @@ void FramebufferManager::InvalidatePeekCache(bool forced)
{ {
if (forced || m_efb_color_cache.out_of_date) 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.valid = false;
m_efb_color_cache.out_of_date = 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 (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.valid = false;
m_efb_depth_cache.out_of_date = false; m_efb_depth_cache.out_of_date = false;
std::fill(m_efb_depth_cache.tiles.begin(), m_efb_depth_cache.tiles.end(), false);
} }
} }


Expand Down

0 comments on commit cff60f5

Please sign in to comment.