diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2016-12-28 16:38:16 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-12-28 16:38:16 +0100 |
| commit | 10b4f6a250bb010ce8094e53e42a5622c0799082 (patch) | |
| tree | 4804e97fe38ac7ebd62467aa9439186ab82fed74 /Source/Core/VideoCommon/TextureCacheBase.h | |
| parent | 4a4d629f0e1804167da010dc8f647fd6cbed9319 (diff) | |
| parent | d0a73c1d90200ba39368bf0905816be4031dd940 (diff) | |
Merge pull request #4568 from degasus/texcache
TextureCache: Add a dirty bit for partial updates on overlapping EFB copies.
Diffstat (limited to 'Source/Core/VideoCommon/TextureCacheBase.h')
| -rw-r--r-- | Source/Core/VideoCommon/TextureCacheBase.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Source/Core/VideoCommon/TextureCacheBase.h b/Source/Core/VideoCommon/TextureCacheBase.h index 0d101ea616..bffeb2aad7 100644 --- a/Source/Core/VideoCommon/TextureCacheBase.h +++ b/Source/Core/VideoCommon/TextureCacheBase.h @@ -57,9 +57,10 @@ public: u64 base_hash; u64 hash; // for paletted textures, hash = base_hash ^ palette_hash u32 format; // bits 0-3 will contain the in-memory format. + u32 memory_stride; bool is_efb_copy; bool is_custom_tex; - u32 memory_stride; + bool may_have_overlapping_textures; unsigned int native_width, native_height; // Texture dimensions from the GameCube's point of view @@ -198,6 +199,11 @@ private: TexPool::iterator FindMatchingTextureFromPool(const TCacheEntryConfig& config); TexAddrCache::iterator GetTexCacheIter(TCacheEntryBase* entry); + // Return all possible overlapping textures. As addr+size of the textures is not + // indexed, this may return false positives. + std::pair<TexAddrCache::iterator, TexAddrCache::iterator> + FindOverlappingTextures(u32 addr, u32 size_in_bytes); + // Removes and unlinks texture from texture cache and returns it to the pool TexAddrCache::iterator InvalidateTexture(TexAddrCache::iterator t_iter); |
