mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-18 23:07:07 -05:00
A registered range larger than 64 MiB is imported one 64 MiB window at a time for buffer and fill accesses instead of whole, and the live imports stay under a budget: APS5_HOST_IMPORT_MIB, else the larger of 6 GiB and half the physical memory, at most the largest host heap less 2 GiB (imports and type-3 mirrors share it; #167's rule). An import past the budget retires the least recently used imports not used in the last 256 lookups. - An access across window edges imports the cells it touches, grown to the union of the range's imports it overlaps, so uses across neighbouring edges share one import instead of replacing each other. - An address-based build (AcquireRegistered) imports the range whole; a window over its first byte does not serve it. - Every refusal (alignment, a failed run, a held import, the budget with what may be evicted) is decided before anything is retired. - An import made when a range is mapped never evicts: the map observer holds no GPU lock. The window size and the budget have setters for the tests.