summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/FramebufferManager.cpp
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2022-11-16 02:22:53 +0100
committerGitHub <noreply@github.com>2022-11-16 02:22:53 +0100
commit99a918d884b7fd9442e2c621e0b2fb566db6aa1c (patch)
tree731b1d2554f104f72d31a1a9bf814e627964b1bc /Source/Core/VideoCommon/FramebufferManager.cpp
parent43e90ca02333b2842d086626aa23cf880e432ea2 (diff)
parent1fdf15a1be499c308a2e3c7af96d09824638dc3e (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.cpp20
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);