diff options
Diffstat (limited to '')
| -rw-r--r-- | src/video_core/texture_cache/image_base.h | 8 | ||||
| -rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 14 |
2 files changed, 11 insertions, 11 deletions
diff --git a/src/video_core/texture_cache/image_base.h b/src/video_core/texture_cache/image_base.h index 65e68cbb3..ff1feda9b 100644 --- a/src/video_core/texture_cache/image_base.h +++ b/src/video_core/texture_cache/image_base.h | |||
| @@ -29,10 +29,10 @@ enum class ImageFlagBits : u32 { | |||
| 29 | Sparse = 1 << 9, ///< Image has non continous submemory. | 29 | Sparse = 1 << 9, ///< Image has non continous submemory. |
| 30 | 30 | ||
| 31 | // Garbage Collection Flags | 31 | // Garbage Collection Flags |
| 32 | BadOverlap = 1 << 10,///< This image overlaps other but doesn't fit, has higher | 32 | BadOverlap = 1 << 10, ///< This image overlaps other but doesn't fit, has higher |
| 33 | ///< garbage collection priority | 33 | ///< garbage collection priority |
| 34 | Alias = 1 << 11, ///< This image has aliases and has priority on garbage | 34 | Alias = 1 << 11, ///< This image has aliases and has priority on garbage |
| 35 | ///< collection | 35 | ///< collection |
| 36 | }; | 36 | }; |
| 37 | DECLARE_ENUM_FLAG_OPERATORS(ImageFlagBits) | 37 | DECLARE_ENUM_FLAG_OPERATORS(ImageFlagBits) |
| 38 | 38 | ||
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 500c4dd52..8b1aa8122 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h | |||
| @@ -495,7 +495,7 @@ void TextureCache<P>::RunGarbageCollector() { | |||
| 495 | } | 495 | } |
| 496 | } | 496 | } |
| 497 | if (True(image->flags & ImageFlagBits::Tracked)) { | 497 | if (True(image->flags & ImageFlagBits::Tracked)) { |
| 498 | UntrackImage(*image); | 498 | UntrackImage(*image, image_id); |
| 499 | } | 499 | } |
| 500 | UnregisterImage(image_id); | 500 | UnregisterImage(image_id); |
| 501 | DeleteImage(image_id); | 501 | DeleteImage(image_id); |
| @@ -1474,16 +1474,16 @@ template <class P> | |||
| 1474 | template <typename Func> | 1474 | template <typename Func> |
| 1475 | void TextureCache<P>::ForEachSparseSegment(ImageBase& image, Func&& func) { | 1475 | void TextureCache<P>::ForEachSparseSegment(ImageBase& image, Func&& func) { |
| 1476 | using FuncReturn = typename std::invoke_result<Func, GPUVAddr, VAddr, size_t>::type; | 1476 | using FuncReturn = typename std::invoke_result<Func, GPUVAddr, VAddr, size_t>::type; |
| 1477 | static constexpr bool BOOL_BREAK = std::is_same_v<FuncReturn, bool>; | 1477 | static constexpr bool RETURNS_BOOL = std::is_same_v<FuncReturn, bool>; |
| 1478 | const auto segments = gpu_memory.GetSubmappedRange(image.gpu_addr, image.guest_size_bytes); | 1478 | const auto segments = gpu_memory.GetSubmappedRange(image.gpu_addr, image.guest_size_bytes); |
| 1479 | for (auto& segment : segments) { | 1479 | for (auto& segment : segments) { |
| 1480 | const auto gpu_addr = segment.first; | 1480 | const auto gpu_addr = segment.first; |
| 1481 | const auto size = segment.second; | 1481 | const auto size = segment.second; |
| 1482 | std::optional<VAddr> cpu_addr = gpu_memory.GpuToCpuAddress(gpu_addr); | 1482 | std::optional<VAddr> cpu_addr = gpu_memory.GpuToCpuAddress(gpu_addr); |
| 1483 | ASSERT(cpu_addr); | 1483 | ASSERT(cpu_addr); |
| 1484 | if constexpr (BOOL_BREAK) { | 1484 | if constexpr (RETURNS_BOOL) { |
| 1485 | if (func(gpu_addr, *cpu_addr, size)) { | 1485 | if (func(gpu_addr, *cpu_addr, size)) { |
| 1486 | return true; | 1486 | break; |
| 1487 | } | 1487 | } |
| 1488 | } else { | 1488 | } else { |
| 1489 | func(gpu_addr, *cpu_addr, size); | 1489 | func(gpu_addr, *cpu_addr, size); |
| @@ -1599,9 +1599,9 @@ void TextureCache<P>::UnregisterImage(ImageId image_id) { | |||
| 1599 | ASSERT(it != sparse_views.end()); | 1599 | ASSERT(it != sparse_views.end()); |
| 1600 | auto& sparse_maps = it->second; | 1600 | auto& sparse_maps = it->second; |
| 1601 | for (auto& map_view_id : sparse_maps) { | 1601 | for (auto& map_view_id : sparse_maps) { |
| 1602 | const auto& map = slot_map_views[map_view_id]; | 1602 | const auto& map_range = slot_map_views[map_view_id]; |
| 1603 | const VAddr cpu_addr = map.cpu_addr; | 1603 | const VAddr cpu_addr = map_range.cpu_addr; |
| 1604 | const std::size_t size = map.size; | 1604 | const std::size_t size = map_range.size; |
| 1605 | ForEachCPUPage(cpu_addr, size, [this, image_id](u64 page) { | 1605 | ForEachCPUPage(cpu_addr, size, [this, image_id](u64 page) { |
| 1606 | const auto page_it = page_table.find(page); | 1606 | const auto page_it = page_table.find(page); |
| 1607 | if (page_it == page_table.end()) { | 1607 | if (page_it == page_table.end()) { |