diff options
| author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-07-04 16:36:31 +0200 |
|---|---|---|
| committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-07-04 22:32:36 +0200 |
| commit | 82c04074c7707c898726e3ebd6c4373dabe4ae4f (patch) | |
| tree | be4895df7392745781b5be9947062984c2b7f887 /src/video_core/texture_cache/texture_cache.h | |
| parent | 9be87e6a71ac957cdb3d900630122ef1cf8ac801 (diff) | |
Texture Cache: Fix collision with multiple overlaps of the same sparse texture.
Diffstat (limited to 'src/video_core/texture_cache/texture_cache.h')
| -rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 8b1aa81229..e3542301e0 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -1169,7 +1169,12 @@ ImageId TextureCache<P>::JoinImages(const ImageInfo& info, GPUVAddr gpu_addr, VA ForEachImageInRegion(cpu_addr, size_bytes, region_check); const auto region_check_gpu = [&](ImageId overlap_id, ImageBase& overlap) { if (!overlaps_found.contains(overlap_id)) { - ignore_textures.insert(overlap_id); + if (True(overlap.flags & ImageFlagBits::Remapped)) { + ignore_textures.insert(overlap_id); + } + if (overlap.gpu_addr == gpu_addr && overlap.guest_size_bytes == size_bytes) { + ignore_textures.insert(overlap_id); + } } }; ForEachSparseImageInRegion(gpu_addr, size_bytes, region_check_gpu); |
