diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-31 23:24:24 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-11-01 08:39:49 -0500 |
| commit | 2f94fb9680cb6b1c35bee33f802ff25fa3560bd2 (patch) | |
| tree | 865c6308d8dac13f28c1825ba54184b44881dbc4 /src/video_core/renderer_vulkan/vk_rasterizer.cpp | |
| parent | 5de94bdd1d2441c0dba30456a7865756980a4ab1 (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.cpp | 1 |
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(); |
