From 1682b532da3048c363273862bd1b9e0c77c3b9bf Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Fri, 31 Jul 2026 05:09:14 -0400 Subject: [PATCH] relax memory and draws dispatchs --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 4 ++-- src/video_core/renderer_vulkan/vk_scheduler.h | 2 +- src/video_core/texture_cache/texture_cache.h | 5 ++++- src/video_core/texture_cache/texture_cache_base.h | 9 +++++---- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 94c0160f3f..ac1e7a9677 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -1001,8 +1001,8 @@ void RasterizerVulkan::LoadDiskResources(u64 title_id, std::stop_token stop_load void RasterizerVulkan::FlushWork() { #ifdef __ANDROID__ - static constexpr u32 DRAWS_TO_DISPATCH = 512; - static constexpr u32 CHECK_MASK = 31; + static constexpr u32 DRAWS_TO_DISPATCH = 1024; + static constexpr u32 CHECK_MASK = 63; #else static constexpr u32 DRAWS_TO_DISPATCH = 4096; static constexpr u32 CHECK_MASK = 31; diff --git a/src/video_core/renderer_vulkan/vk_scheduler.h b/src/video_core/renderer_vulkan/vk_scheduler.h index b14463c477..5a48b50a11 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.h +++ b/src/video_core/renderer_vulkan/vk_scheduler.h @@ -266,7 +266,7 @@ private: size_t command_offset = 0; bool submit = false; - alignas(std::max_align_t) std::array data{}; + alignas(std::max_align_t) std::array data{}; }; struct State { diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index c39b74dfb5..f00d645055 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -207,7 +207,10 @@ u64 TextureCache

::ReclaimMemory(u64 target_bytes, bool allow_download) { frame_tick > RECLAIM_GUARD_FRAMES ? frame_tick - RECLAIM_GUARD_FRAMES : 0; lru_cache.ForEachItemBelow(cold_tick, evict); if (freed == 0) { - lru_cache.ForEachItemBelow(frame_tick > 0 ? frame_tick - 1 : 0, evict); + const u64 urgent_tick = frame_tick > RECLAIM_URGENT_GUARD_FRAMES + ? frame_tick - RECLAIM_URGENT_GUARD_FRAMES + : 0; + lru_cache.ForEachItemBelow(urgent_tick, evict); } in_reclaim = false; usage_refresh_countdown = 0; diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h index 93a6a36f45..23d7cc6cae 100644 --- a/src/video_core/texture_cache/texture_cache_base.h +++ b/src/video_core/texture_cache/texture_cache_base.h @@ -113,15 +113,16 @@ class TextureCache : public VideoCommon::ChannelSetupCaches::max)()}; #ifdef YUZU_LEGACY - static constexpr u64 RECLAIM_HEADROOM = 384_MiB; + static constexpr u64 RECLAIM_HEADROOM = 192_MiB; #else - static constexpr u64 RECLAIM_HEADROOM = 512_MiB; + static constexpr u64 RECLAIM_HEADROOM = 256_MiB; #endif static constexpr u64 FALLBACK_MEMORY_BUDGET = 2_GiB; static constexpr u32 USAGE_REFRESH_INTERVAL = 16; - static constexpr u64 RECLAIM_GUARD_FRAMES = 8; - static constexpr u64 RECLAIM_TARGET_PERCENT = 95; + static constexpr u64 RECLAIM_GUARD_FRAMES = 16; + static constexpr u64 RECLAIM_URGENT_GUARD_FRAMES = 4; + static constexpr u64 RECLAIM_TARGET_PERCENT = 90; using Runtime = typename P::Runtime; using Image = typename P::Image;