From 0ef55539a36d1599a43b3218f2fe7859fd7df07b Mon Sep 17 00:00:00 2001 From: lizzie Date: Sun, 1 Feb 2026 07:48:23 +0000 Subject: [PATCH] f2 --- src/video_core/texture_cache/texture_cache.h | 4 ++-- src/video_core/texture_cache/texture_cache_base.h | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 1121284aaf..0ed65e29e9 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -1989,8 +1989,8 @@ SamplerId TextureCache

::FindSampler(const TSCEntry& config) { } const auto [pair, is_new] = channel_state->samplers.try_emplace(config); if (is_new) { - EnforceSamplerBudget(); pair->second = slot_samplers.insert(runtime, config); + EnforceSamplerBudget(); } return pair->second; } @@ -2363,7 +2363,7 @@ void TextureCache

::UnregisterImage(ImageId image_id) { image.flags &= ~ImageFlagBits::BadOverlap; lru_cache.Free(image.lru_index); const auto& clear_page_table = - [image_id](u64 page, std::unordered_map, Common::IdentityHash>& selected_page_table) { + [image_id](u64 page, ankerl::unordered_dense::map, Common::IdentityHash>& selected_page_table) { const auto page_it = selected_page_table.find(page); if (page_it == selected_page_table.end()) { ASSERT_MSG(false, "Unregistering unregistered page=0x{:x}", page << YUZU_PAGEBITS); diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h index 0016c9968a..cff300da8f 100644 --- a/src/video_core/texture_cache/texture_cache_base.h +++ b/src/video_core/texture_cache/texture_cache_base.h @@ -14,6 +14,7 @@ #include // TODO: find out which don't require stable iters #include +#include #include #include #include @@ -66,7 +67,7 @@ struct AsyncDecodeContext { std::atomic_bool complete; }; -using TextureCacheGPUMap = std::unordered_map, Common::IdentityHash>; +using TextureCacheGPUMap = ankerl::unordered_dense::map, Common::IdentityHash>; class TextureCacheChannelInfo : public ChannelInfo { public: @@ -85,6 +86,7 @@ public: std::vector compute_sampler_ids; std::vector compute_image_view_ids; + // TODO: still relies on bad iterators :( std::unordered_map image_views; std::unordered_map samplers; @@ -454,10 +456,9 @@ private: RenderTargets render_targets; - std::unordered_map framebuffers; - - std::unordered_map, Common::IdentityHash> page_table; - std::unordered_map> sparse_views; + ankerl::unordered_dense::map framebuffers; + ankerl::unordered_dense::map, Common::IdentityHash> page_table; + ankerl::unordered_dense::map> sparse_views; DAddr virtual_invalid_space{}; @@ -514,7 +515,7 @@ private: DelayedDestructionRing sentenced_image_view; DelayedDestructionRing sentenced_framebuffers; - std::unordered_map image_allocs_table; + ankerl::unordered_dense::map image_allocs_table; Common::ScratchBuffer swizzle_data_buffer; Common::ScratchBuffer unswizzle_data_buffer; @@ -541,7 +542,7 @@ private: ImageId id; }; boost::container::small_vector join_copies_to_do; - std::unordered_map join_alias_indices; + ankerl::unordered_dense::map join_alias_indices; }; } // namespace VideoCommon