From d3f230b0642de761229670b188e06d74073d24aa Mon Sep 17 00:00:00 2001 From: mchughalex <25671999+mchughalex@users.noreply.github.com> Date: Tue, 21 Jul 2026 06:19:40 +0100 Subject: [PATCH] render: double the texture store cap now that entries carry no staging --- src/skate3_native_scene_gpu.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/skate3_native_scene_gpu.cpp b/src/skate3_native_scene_gpu.cpp index 4c74121..d03e3bd 100644 --- a/src/skate3_native_scene_gpu.cpp +++ b/src/skate3_native_scene_gpu.cpp @@ -183,10 +183,17 @@ void RetireGuestTexture(const GuestTexture& t, uint64_t submission) { // reuse) is just different keys, so both states of any transition stay // resident and no rebind can ever serve another binding's art. std::atomic g_store_evicted{0}; -constexpr size_t kTexStoreCap = 3072; +constexpr size_t kTexStoreCap = 6144; uint32_t SwapU32(uint32_t v); // defined with the decode helpers below +// (kTexStoreCap sizing: dense areas with the extended draw distance hold a +// ~3000-4000 entry live working set, so the previous 3072 cap kept the +// eviction latch cycling and re-decoding mip states the player was about +// to face again - re-promoted content resolved visibly late. Entries no +// longer retain their staging buffers, so 6144 costs the VRAM the old +// 3072 did.) + // Seqlock-stable read of a texture object's six fetch words, guest -> host // order. The streamer rewrites the words word-by-word on its own thread; a // mixed snapshot decodes a coherent image of the WRONG memory (a shared