diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/texture_cache/image_info.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/texture_cache/image_info.h | 1 | ||||
| -rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 15 |
3 files changed, 10 insertions, 7 deletions
diff --git a/src/video_core/texture_cache/image_info.cpp b/src/video_core/texture_cache/image_info.cpp index b72788c6d..9444becce 100644 --- a/src/video_core/texture_cache/image_info.cpp +++ b/src/video_core/texture_cache/image_info.cpp | |||
| @@ -42,6 +42,7 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept { | |||
| 42 | }; | 42 | }; |
| 43 | } | 43 | } |
| 44 | rescaleable = false; | 44 | rescaleable = false; |
| 45 | is_sparse = config.is_sparse != 0; | ||
| 45 | tile_width_spacing = config.tile_width_spacing; | 46 | tile_width_spacing = config.tile_width_spacing; |
| 46 | if (config.texture_type != TextureType::Texture2D && | 47 | if (config.texture_type != TextureType::Texture2D && |
| 47 | config.texture_type != TextureType::Texture2DNoMipmap) { | 48 | config.texture_type != TextureType::Texture2DNoMipmap) { |
diff --git a/src/video_core/texture_cache/image_info.h b/src/video_core/texture_cache/image_info.h index 8a4cb0cbd..eb490a642 100644 --- a/src/video_core/texture_cache/image_info.h +++ b/src/video_core/texture_cache/image_info.h | |||
| @@ -41,6 +41,7 @@ struct ImageInfo { | |||
| 41 | bool downscaleable = false; | 41 | bool downscaleable = false; |
| 42 | bool forced_flushed = false; | 42 | bool forced_flushed = false; |
| 43 | bool dma_downloaded = false; | 43 | bool dma_downloaded = false; |
| 44 | bool is_sparse = false; | ||
| 44 | }; | 45 | }; |
| 45 | 46 | ||
| 46 | } // namespace VideoCommon | 47 | } // namespace VideoCommon |
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 3a1cc060e..01c3561c9 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h | |||
| @@ -600,17 +600,17 @@ void TextureCache<P>::UnmapGPUMemory(size_t as_id, GPUVAddr gpu_addr, size_t siz | |||
| 600 | [&](ImageId id, Image&) { deleted_images.push_back(id); }); | 600 | [&](ImageId id, Image&) { deleted_images.push_back(id); }); |
| 601 | for (const ImageId id : deleted_images) { | 601 | for (const ImageId id : deleted_images) { |
| 602 | Image& image = slot_images[id]; | 602 | Image& image = slot_images[id]; |
| 603 | if (True(image.flags & ImageFlagBits::CpuModified)) { | 603 | if (False(image.flags & ImageFlagBits::CpuModified)) { |
| 604 | continue; | 604 | image.flags |= ImageFlagBits::CpuModified; |
| 605 | if (True(image.flags & ImageFlagBits::Tracked)) { | ||
| 606 | UntrackImage(image, id); | ||
| 607 | } | ||
| 605 | } | 608 | } |
| 606 | image.flags |= ImageFlagBits::CpuModified; | 609 | |
| 607 | if (True(image.flags & ImageFlagBits::Remapped)) { | 610 | if (True(image.flags & ImageFlagBits::Remapped)) { |
| 608 | continue; | 611 | continue; |
| 609 | } | 612 | } |
| 610 | image.flags |= ImageFlagBits::Remapped; | 613 | image.flags |= ImageFlagBits::Remapped; |
| 611 | if (True(image.flags & ImageFlagBits::Tracked)) { | ||
| 612 | UntrackImage(image, id); | ||
| 613 | } | ||
| 614 | } | 614 | } |
| 615 | } | 615 | } |
| 616 | 616 | ||
| @@ -1469,7 +1469,8 @@ ImageId TextureCache<P>::JoinImages(const ImageInfo& info, GPUVAddr gpu_addr, DA | |||
| 1469 | const ImageId new_image_id = slot_images.insert(runtime, new_info, gpu_addr, cpu_addr); | 1469 | const ImageId new_image_id = slot_images.insert(runtime, new_info, gpu_addr, cpu_addr); |
| 1470 | Image& new_image = slot_images[new_image_id]; | 1470 | Image& new_image = slot_images[new_image_id]; |
| 1471 | 1471 | ||
| 1472 | if (!gpu_memory->IsContinuousRange(new_image.gpu_addr, new_image.guest_size_bytes)) { | 1472 | if (!gpu_memory->IsContinuousRange(new_image.gpu_addr, new_image.guest_size_bytes) && |
| 1473 | new_info.is_sparse) { | ||
| 1473 | new_image.flags |= ImageFlagBits::Sparse; | 1474 | new_image.flags |= ImageFlagBits::Sparse; |
| 1474 | } | 1475 | } |
| 1475 | 1476 | ||