diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-28 22:24:39 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-28 22:24:39 -0400 |
| commit | 808039e5806dc841a30ef7d887462635860ae291 (patch) | |
| tree | ef4d0aac85e999bc1ba34ff2fa19b22054c0d4fd /src/video_core/texture_cache/formatter.cpp | |
| parent | f7b32cb82fafc1fdadabe71e15afdee38f9d9212 (diff) | |
nx2:gpu: free GPU-only region memory when the region is destroyed
Sub 215 dropped the region's GPU mapping but kept the kernel pages 214
had allocated for it, and their SMMU mapping (cached per CPU range).
Title 1 creates and destroys these regions as scenes load, so the pool
ran dry within minutes and later regions got no memory at all (37
allocation failures in 85 s, 165 in a longer run): GPU writes to them
were lost.
Destroying a region now drops its GPU mapping, then (through a new
registry release step, in GPU-thread order) each address space's SMMU
mapping and cache entry, and frees the pages once the GPU thread is
past both. A 4-minute run destroyed 116 regions with no later failures
and renders cleanly; only the 5.8 GB virtual texture regions and three
170-340 MB regions at startup still do not fit the pool.
Diffstat (limited to 'src/video_core/texture_cache/formatter.cpp')
0 files changed, 0 insertions, 0 deletions
