diff options
Diffstat (limited to 'Source/Core/VideoCommon/Src/TextureCacheBase.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/Src/TextureCacheBase.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Source/Core/VideoCommon/Src/TextureCacheBase.cpp b/Source/Core/VideoCommon/Src/TextureCacheBase.cpp index a3d6c62740..ba54adbac5 100644 --- a/Source/Core/VideoCommon/Src/TextureCacheBase.cpp +++ b/Source/Core/VideoCommon/Src/TextureCacheBase.cpp @@ -119,8 +119,12 @@ void TextureCache::InvalidateRange(u32 start_address, u32 size) void TextureCache::MakeRangeDynamic(u32 start_address, u32 size) { TexCache::iterator - iter = textures.begin(), - tcend = textures.end(); + iter = textures.lower_bound(start_address), + tcend = textures.upper_bound(start_address + size); + + if (iter != textures.begin()) + iter--; + for (; iter != tcend; ++iter) { const int rangePosition = iter->second->IntersectsMemoryRange(start_address, size); @@ -131,6 +135,18 @@ void TextureCache::MakeRangeDynamic(u32 start_address, u32 size) } } +bool TextureCache::Find(u32 start_address, u64 hash) +{ + TexCache::iterator + iter = textures.lower_bound(start_address), + tcend = textures.upper_bound(start_address); + + if (iter->second->hash == hash) + return true; + + return false; +} + int TextureCache::TCacheEntryBase::IntersectsMemoryRange(u32 range_address, u32 range_size) const { if (addr + size_in_bytes < range_address) |
