mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-02 12:56:05 +00:00
AcquireRegistered imports every registered GPU range whole without eviction, so a range the import budget refuses and no mirror serves is copied on every build, and copies past APS5_ADDRESS_COPY_MAX_MIB (64 MiB by default) abort the process. Resident Evil Village (PPSA01556) aborts this way on a 768 MiB heap 8 MiB over the budget. The pass now retries such a range's import with eviction when, and only when, copying it would take the build's copies past the cap, that is when the build would abort otherwise. Imports the build already looked up or made count as held (buildFloor) and are never evicted; the retire moves the import epoch, which Upload and the address-space cache already honour, and a retired import lives through the hold. Every other build still imports without eviction, so the set of imported ranges stays as stable across builds as before. A rate-limited [gpu] line reports such an import. The copy reason of a heap now names what refused it (an import over the host import budget, a heap not fully write-watched, a refused heap mirror) instead of "outside the write-watched arena" for every heap.