diff options
| -rw-r--r-- | docs/performance/MKW-INTEGRATION.md | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/docs/performance/MKW-INTEGRATION.md b/docs/performance/MKW-INTEGRATION.md new file mode 100644 index 0000000000..1844a6f824 --- /dev/null +++ b/docs/performance/MKW-INTEGRATION.md @@ -0,0 +1,58 @@ +# Mario Kart World integration test + +Base: upstream `nx2` at `62214094d6c698b70f51016e5c12af415f025be7`. + +This branch keeps upstream's current command-list copies, shader support, ASTC +transcode fix, fiber allocation changes, and game-loading and amiibo fixes. +It applies the remaining changes independently so they can be reviewed separately. + +From the snowstormxd performance fork: + +- Execute native macro parameters without a second FIFO copy. +- Keep register-write history optional in release builds. +- Reuse unchanged small uniform allocations within one live scheduler tick. +- Batch shader invalidations, preserving every supplied write range. +- Clear only the descriptor bitmap words exposed by the current table limit. + +Adapted from [Selevet performance build 4](https://github.com/sylvieistaken/selevet-eglantine/releases/tag/selevet-eglantine-performance-4): + +- Submit native graphics work every 128 draws to overlap GPU execution with CPU + recording. Other titles retain their existing submission threshold. +- Use the current draw's actual element count when deciding whether asynchronous + shader compilation may skip it. Indirect counts stay unknown rather than using + an earlier draw's count. +- Traverse cache and scheduler bitmaps by skipping empty words. Wider priority + bitsets retain the generic traversal. The slot iterator also handles an empty + first bitmap word correctly. + +Handheld mode is the default. Explicit saved preferences can still select docked +mode. The changes use the existing portable timing and synchronization paths. + +The Windows hybrid timer, Windows RAM trimming and process-priority changes are +not included. Unsafe preemptive reads, compute-acquire bypasses, and guest SDK VRR +patching are also excluded. Current upstream command-list copying is retained +instead of Selevet's older command-readback implementation. + +## Validation + +The regression tests exercise the real macro JIT with FIFO reallocations, uniform +data mutation and session resets, descriptor-table growth and invalidation, +batched shader removal against sequential invalidation, sparse slot iteration, +and priority ordering against an independent queue model. Priority tests include +both 64- and 128-priority queues. + +The Windows test package uses Clang 23.1.4, the checksum-pinned Eden v020525 PGO +profile, and ThinLTO. Selevet's MSVC-ABI profile is not substituted for the MinGW +build's profile. Link-time optimization is a build option; other platforms can +continue using their usual build configuration. + +Compare the same course and route against the prior build, using a copy of the +same shader cache, game version, and settings. Check item icons, geometry, +collision, audio, hitches, and stopping/closing. Asynchronous shaders can delay +the appearance of new objects while their pipelines compile. A lower CPU counter +alone does not establish an FPS gain. No locked-60-FPS result is claimed. + +`EDEN_NX2_FLUSH_DRAWS=4096` restores the previous native submission threshold for +a controlled comparison. `EDEN_NX2_UBOREUSE=0` disables uniform allocation reuse. + +Assisted by Codex. |
