summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/TextureCacheBase.h
diff options
context:
space:
mode:
authorMarkus Wick <degasus@users.noreply.github.com>2016-12-28 16:38:16 +0100
committerGitHub <noreply@github.com>2016-12-28 16:38:16 +0100
commit10b4f6a250bb010ce8094e53e42a5622c0799082 (patch)
tree4804e97fe38ac7ebd62467aa9439186ab82fed74 /Source/Core/VideoCommon/TextureCacheBase.h
parent4a4d629f0e1804167da010dc8f647fd6cbed9319 (diff)
parentd0a73c1d90200ba39368bf0905816be4031dd940 (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.h8
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);