diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2022-11-16 02:22:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-16 02:22:53 +0100 |
| commit | 99a918d884b7fd9442e2c621e0b2fb566db6aa1c (patch) | |
| tree | 731b1d2554f104f72d31a1a9bf814e627964b1bc /Source/Core/VideoCommon/FramebufferManager.cpp | |
| parent | 43e90ca02333b2842d086626aa23cf880e432ea2 (diff) | |
| parent | 1fdf15a1be499c308a2e3c7af96d09824638dc3e (diff) | |
Merge pull request #11280 from Pokechu22/efb-cache-cleanup
VideoCommon/FramebufferManager: Further EFB cache cleanup
Diffstat (limited to 'Source/Core/VideoCommon/FramebufferManager.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/FramebufferManager.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Source/Core/VideoCommon/FramebufferManager.cpp b/Source/Core/VideoCommon/FramebufferManager.cpp index a7b248f25d..f025b2dfde 100644 --- a/Source/Core/VideoCommon/FramebufferManager.cpp +++ b/Source/Core/VideoCommon/FramebufferManager.cpp @@ -386,19 +386,20 @@ bool FramebufferManager::IsEFBCacheTilePresent(bool depth, u32 x, u32 y, u32* ti } else { - *tile_index = - ((y / m_efb_cache_tile_size) * m_efb_cache_tiles_wide) + (x / m_efb_cache_tile_size); + const u32 tile_x = x / m_efb_cache_tile_size; + const u32 tile_y = y / m_efb_cache_tile_size; + *tile_index = (tile_y * m_efb_cache_tile_row_stride) + tile_x; } return data.tiles[*tile_index].present; } MathUtil::Rectangle<int> FramebufferManager::GetEFBCacheTileRect(u32 tile_index) const { - if (m_efb_cache_tile_size == 0) + if (!IsUsingTiledEFBCache()) return MathUtil::Rectangle<int>(0, 0, EFB_WIDTH, EFB_HEIGHT); - const u32 tile_y = tile_index / m_efb_cache_tiles_wide; - const u32 tile_x = tile_index % m_efb_cache_tiles_wide; + const u32 tile_y = tile_index / m_efb_cache_tile_row_stride; + const u32 tile_x = tile_index % m_efb_cache_tile_row_stride; const u32 start_y = tile_y * m_efb_cache_tile_size; const u32 start_x = tile_x * m_efb_cache_tile_size; return MathUtil::Rectangle<int>( @@ -439,8 +440,7 @@ float FramebufferManager::PeekEFBDepth(u32 x, u32 y) if (!IsEFBCacheTilePresent(true, x, y, &tile_index)) PopulateEFBCache(true, tile_index); - if (IsUsingTiledEFBCache()) - m_efb_depth_cache.tiles[tile_index].frame_access_mask |= 1; + m_efb_depth_cache.tiles[tile_index].frame_access_mask |= 1; if (m_efb_depth_cache.needs_flush) { @@ -683,7 +683,11 @@ bool FramebufferManager::CreateReadbackFramebuffer() const u32 tiles_wide = ((EFB_WIDTH + (m_efb_cache_tile_size - 1)) / m_efb_cache_tile_size); const u32 tiles_high = ((EFB_HEIGHT + (m_efb_cache_tile_size - 1)) / m_efb_cache_tile_size); total_tiles = tiles_wide * tiles_high; - m_efb_cache_tiles_wide = tiles_wide; + m_efb_cache_tile_row_stride = tiles_wide; + } + else + { + m_efb_cache_tile_row_stride = 1; } m_efb_color_cache.tiles.resize(total_tiles); |
