mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-05 13:20:11 +00:00
The buffer pool's device tier (detiler scratch buffers and the staging shadows of written guest buffers) retained at most 512 MiB by default. A title whose working set of these buffers is larger allocates and frees device memory continually: PPSA14632 (LEGO Horizon Adventures) had 70761 misses and 69828 evictions per 10 s with 485 of 512 MiB retained, each a vkAllocateMemory or vkFreeMemory. The default budget is now an eighth of the largest device-local heap, and at least the old 512 MiB, so a 16 GiB card retains up to 2 GiB and an 8 GiB card 1 GiB. APS5_STAGING_POOL_MIB still sets it. Only the constructor knows the device, so only the budget comes from the heap. Whether the tier is in use at all (APS5_STAGING_POOL_MIB unset or not 0) stays a static check, DeviceTierEnabled, which Capacity, Usage and tierFor share, so the size classes and the tier stay consistent. On PPSA14632 with 2 GiB the device tier has 1312 misses and 99 evictions per 10 s (1628 MiB retained), and presents rise from about 34 to about 39 per 10 s. Co-Authored-By: Claude Opus 5.5 <[email protected]>