From 29e77b5e2dd93b3391c497cfd4b64afd15e0c4ce Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Fri, 3 Apr 2026 00:07:04 -0400 Subject: [PATCH] small fix for the softlock after lru cache removal --- src/video_core/texture_cache/texture_cache.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 5c0c58b9d3..72beb843a6 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -199,7 +199,8 @@ void TextureCache

::RunGarbageCollector() { const auto CollectBelow = [this](u64 threshold) { boost::container::small_vector expired; for (auto [id, image] : slot_images) { - if (image->last_use_tick < threshold) { + if (True(image->flags & ImageFlagBits::Registered) && + image->last_use_tick < threshold) { expired.push_back(id); } } @@ -226,7 +227,7 @@ void TextureCache

::RunGarbageCollector() { } Configure(false); - { + if (frame_tick > ticks_to_destroy) { auto expired = CollectBelow(frame_tick - ticks_to_destroy); for (const auto image_id : expired) { if (Cleanup(image_id)) { @@ -238,10 +239,12 @@ void TextureCache

::RunGarbageCollector() { // If pressure is still too high, prune aggressively. if (total_used_memory >= critical_memory) { Configure(true); - auto expired = CollectBelow(frame_tick - ticks_to_destroy); - for (const auto image_id : expired) { - if (Cleanup(image_id)) { - break; + if (frame_tick > ticks_to_destroy) { + auto expired = CollectBelow(frame_tick - ticks_to_destroy); + for (const auto image_id : expired) { + if (Cleanup(image_id)) { + break; + } } } }