diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-29 05:46:38 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-29 20:49:47 -0400 |
| commit | 06f294c7e6b305d5d8904d284de70c268cc3f2e0 (patch) | |
| tree | 03181491fb0869fa12856ae8a6c8d6616ebc2f04 /src/video_core/query_cache | |
| parent | 7fa88f0bb18ab0ae1896e6060a0c770e73446f51 (diff) | |
core: per-thread device memory translation cache
DeviceMemoryManager kept one four-entry page translation cache for every thread. Map
(on a guest service thread, e.g. nx2:gpu 211 job mappings) cleared it while the GPU
thread was between its null check of an entry and the copy from it: the GPU thread
then read from address 0 plus the page offset. Title 1 crashed this way in about half
of its 150 s test runs (BindHostGraphicsUniformBuffer -> ReadBlockUnsafe, fault at
0x600). Each thread now keeps its own cache, which Map and Unmap invalidate through a
generation counter. 0 crashes in 6 runs after.
Diffstat (limited to 'src/video_core/query_cache')
0 files changed, 0 insertions, 0 deletions
