diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-29 11:18:19 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-29 20:49:48 -0400 |
| commit | 17c10c3690eab1ab461318f7e3e8850d490fb753 (patch) | |
| tree | 5fade1276a4cc07d62612c987eac016d732d158d /NX2_GPU_THREAD_SPLIT.md | |
| parent | 7a251d3a92f870649dab6068007ca3a1c910bbb5 (diff) | |
nx2: notes 142-144 (GPU thread split, scheduler race, front register copies)
Diffstat (limited to 'NX2_GPU_THREAD_SPLIT.md')
| -rw-r--r-- | NX2_GPU_THREAD_SPLIT.md | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/NX2_GPU_THREAD_SPLIT.md b/NX2_GPU_THREAD_SPLIT.md index f739704dbf..2807b930dc 100644 --- a/NX2_GPU_THREAD_SPLIT.md +++ b/NX2_GPU_THREAD_SPLIT.md @@ -1,4 +1,4 @@ -# Splitting the GPU thread (design, not implemented yet) +# Splitting the GPU thread Title 1 (Mario Kart World) is bound by one host thread, the GPU thread: ~100% busy while the host GPU is 20-40% busy and the game's own CPU thread mostly polls the counter. Per second of @@ -51,3 +51,12 @@ heavy courses needs work on more than one core. 3. Move macros to the front with the register mirrors; verify mirrors against the back's registers in a debug mode (compare on every MME_READ). 4. Sync points; crash and screenshot tests across courses; then title 4. + +## Status (2026-10-29) + +Stages 1-3 are in (babd395, `gpu_split.h`), off by default: `EDEN_NX2_SPLIT=1` runs engine methods +on the back, `EDEN_NX2_SPLIT=2` also runs the 3D and compute macros on the front against register +copies. Measured in title 1 (NX2_NOTES rows 142-144): ~44,000 draws a second on one thread, ~47,400 +with stage 2, 50,000-66,500 with stage 3. The front waits ~4,000-5,000 times a second (semaphore +acquires, MME DMA reads); the back still spends ~200 ms a second outside its zones (ring dispatch, +method sink). Next: a clean A/B for the default, then trimming the back's ring overhead. |
