aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/vk_rasterizer.cpp
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-31 23:24:24 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-11-01 08:39:49 -0500
commit2f94fb9680cb6b1c35bee33f802ff25fa3560bd2 (patch)
tree865c6308d8dac13f28c1825ba54184b44881dbc4 /src/video_core/renderer_vulkan/vk_rasterizer.cpp
parent5de94bdd1d2441c0dba30456a7865756980a4ab1 (diff)
vk_pipeline_cache: destroy graphics pipelines unused for 9000 frames
Each built pipeline holds ~0.45 MB of driver memory and none was ever destroyed, so it grew with every place a session went. One unused for 9000 frames is destroyed once the GPU is past it and built again from the driver's pipeline cache (2-3 ms) if it is needed later; the transitions between pipelines are cleared, and pipelines used this session still go to the used list. Mario Kart World's title screen, 10 minutes: 1,714 evicted, 1,700-1,850 kept instead of a count that only grows. (cherry picked from commit 24a37800034f83ec1d8fe9e8e5642d27eb2935b8)
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp')
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index 0826820714..d659e44fe2 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -1193,6 +1193,7 @@ void RasterizerVulkan::FlushCommands() {
void RasterizerVulkan::TickFrame() {
draw_counter = 0;
+ pipeline_cache.TickFrame();
guest_descriptor_queue.TickFrame();
compute_pass_descriptor_queue.TickFrame();
descriptor_buffer_ring.TickFrame();