diff options
| author | duck912 <350528965+Duck912@users.noreply.github.com> | 2026-10-31 00:42:26 -0400 |
|---|---|---|
| committer | Duck912 <350528965+Duck912@users.noreply.github.com> | 2026-11-01 14:59:07 -0500 |
| commit | 68f8d96368505a6146d5cf545463e06469b6e7b8 (patch) | |
| tree | 0f88c520c11d969abf3565803f5fdc18b13ed2eb /src/core/cpu_manager.cpp | |
| parent | 9cf6a499c84af39be013c0a358044cc66e31117a (diff) | |
nvhost_as_gpu: share Switch 2 device ranges between a process's address spaces
Each address space allocated its own SMMU range for the same memory
outside the heap. The caches key memory by device address, so these were
separate copies, and presentation used whichever range was recorded
last: Fire Emblem: Fortune's Weave drew into one alias while VI showed
another, and the screen stayed black.
Key these ranges by (ASID, CPU address, size) and count references. The
first address space allocates the range, the last release frees it, and
a closed session's entries are dropped so a reused ASID can't inherit
them. EDEN_NX2_PRIVATE_DEVICE_RANGES=1 restores a range per address
space.
Assisted-by: Claude Opus 5.5 (debugging, implementation and drafting)
Signed-off-by: duck912 <350528965+Duck912@users.noreply.github.com>
Diffstat (limited to 'src/core/cpu_manager.cpp')
0 files changed, 0 insertions, 0 deletions
