diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-11-01 00:30:52 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-11-01 08:48:31 -0500 |
| commit | e2c512916c6f5042d030fcf1708043233f8df08e (patch) | |
| tree | f9750541db337ba3415a05c4a0d73ebde979c458 /src/common/multi_level_page_table.cpp | |
| parent | a03e816886f4241309a6e77ba7df1ad922da1fc0 (diff) | |
texture_cache: mark guest memory textures were uploaded from cold
Once a texture is uploaded the host GPU has its own copy, and the guest
rarely reads that memory again, but it stayed in the emulator's working
set. Every 600 frames the guest ranges of images uploaded since (64 KiB
or more, not GPU-written or sparse) are marked cold through
HostMemory::HintCold, backing and CPU view, from a low-priority worker,
so the OS pages them out before anything else when it needs RAM. Their
contents stay; using them brings them back. Mario Kart World's title
screen at ~10 minutes: game memory in RAM 4.8-5.5 -> 3.6 GB, the
emulator's real RAM 10.6-11.9 -> 9.4 GB, frames over 100 ms not worse.
(cherry picked from commit ea36b2c5ca352f8c8cdcc829a2d3bde9bdc06ece)
Diffstat (limited to 'src/common/multi_level_page_table.cpp')
0 files changed, 0 insertions, 0 deletions
