Skip to content

Use GPU segment timestamps for Splatoon Raiders dynamic resolution - #1130

Closed
thehobbit85 wants to merge 1 commit into
seedds:mainfrom
thehobbit85:codex/splatoon-segment-timestamps
Closed

thehobbit85 wants to merge 1 commit into
seedds:mainfrom
thehobbit85:codex/splatoon-segment-timestamps

Conversation

@thehobbit85

@thehobbit85 thehobbit85 commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Current refresh — November 9, 2026

Rebased c450cfe87b15d51eddc61184baf8acf7b3f7c28e onto main bbea4c90f136f478e25228bc3d4ab33c77420f2e. The game note now retains main's shader-table repair and this PR's timestamp finding. The profile still enables segment timestamps for Splatoon Raiders; main has not selected that mode. The existing regression and feature remain intact. The note also records dpadr's November 6 comparison as attributed historical measurements, including the remaining 18.5 ms window.

Fresh local validation: 14 documentation/profile tests, the Mac host build (56 compiler warnings), and all 25 native timestamp checks passed. Range-diff, remaining main diff and main ancestry were reviewed. Pinned Python lint is incomplete: 339 findings against 336 baseline, with three Pyright findings in unchanged dmsh_build.py:166–167 and zero stale entries. An exact main snapshot reproduces these findings; no baseline or assertion was changed. Remote CI on this replacement head belongs to the CI follow-up.

Only Splatoon Raiders is affected by this profile setting. No fresh gameplay, shader rebuild, device test or performance measurement was performed; the native timestamp fixture is synthetic. The contributor's gameplay evidence and all earlier checks below retain their original revisions and limitations.

Historical revision records

All remaining revision-specific validation below predates this refresh.

Main’s Splatoon Raiders profile still does not select segment GPU timestamps; its dynamic-resolution profile regression remains relevant.

Current rebase — 2026-11-05

Rebased 78d2453a2ffd547769a1cc44eb0095c2dc9b3695 onto fixed current main f8a5618d5f505a4c0a0bcac7c413872d3a53c009, producing 53c27182f35d2d82cb25b9597e8ea3e6195c1a9e on the same existing canonical and PR branches. Main is an ancestor. This replays the existing feature commit; no new squash or unrelated prerequisite is included.

The game-note conflict was resolved by retaining main’s new mesh-row/table finding together with the timestamp finding and reference. The timestamp profile setting and generated-header regression are unchanged. dpadr’s original coauthor trailer, preserved in the historical commit context, is restored in the rebased commit metadata.

Fresh validation and limits

29 profile/documentation/current-ABI tests and all 25 native timestamp ABI checks passed. The profile/test/timestamp-header blobs match their previously tested feature sources. Main’s current mesh-row correction remains present.

The workflow-pinned Python ratchet (Ruff 0.17.2 / Pyright 1.1.414) passes: 389 findings against 389 recorded, zero new or stale findings. The former shared-main B023 issue is fixed on this base; references to it below are historical. No baseline was loosened. Generated documentation and git diff --check were reviewed. New remote CI is pending publication and is not claimed green.

No new gameplay, runtime segment-writer harness, device or performance measurement was performed. The reporter’s M2 MacBook Air timings and earlier synthetic writer/build evidence below are historical. Other stages, workloads and devices remain unchecked.

Historical proposal, validation and original commit context

The description below predates this rebase. Its commit identities, timing tables, tool environments and validation limits remain historical; they are not a current all-pass or fresh gameplay claim.

Main’s Splatoon Raiders profile still lacks gpu_timestamps segment. The shared completion writer already implements segment timing; this PR selects it for the title and keeps a profile-to-generated-header regression.

Current refresh — 2026-11-04

Candidate 78d2453a2ffd547769a1cc44eb0095c2dc9b3695 is exactly one commit directly atop fresh main 975bb4c14456d145eb3d969814534eecdd996ce9. The canonical branch and existing PR destination are unchanged. The published head was ed83fc7e6ae73e88433ff9e04f6183118f48aacc; preserved local pre-pass candidate was 4638ccaa8af99b708959a0b3454f103e57d6528d. Rebase range-diff is patch-equivalent, and the pre-squash tree 6dfda8f639618283f18662cd2b1fc555676a2756 equals final tree 6dfda8f639618283f18662cd2b1fc555676a2756. No unrelated prerequisite or feature was dropped. Original author credit is preserved.

Validation and limits

29 profile/documentation/current-ABI tests pass on this exact candidate. The complete profile/note and regression blobs are identical to tested 4638ccaa; the one-commit squash preserves the feature tree. Main’s task/mesh header change is included and covered by the current ABI suite.

Only Splatoon Raiders is affected. No fresh gameplay, game build, device or performance run was performed. The prior synthetic production-writer harness, native host build, 25 timestamp checks and reporter’s M2 MacBook Air measurements below remain historical evidence, not new gameplay validation. Its Mac game build was unavailable in the earlier local inventory; the current maintenance pass did not reconstruct game assets.

Shared Python lint is blocked by unchanged main dm/games/settings.py:115 Ruff B023 (390 findings versus 389 baseline), confirmed on the pinned base. No unrelated repair or baseline alteration is included. Generated documentation, final main diff and git diff --check were reviewed for PR #895 placement/artifact rules; no planning journals or run-specific evidence were added to repository documentation. Remote CI for this new unpublished SHA has not run; previous CI results are historical.

Historical context and evidence

The description below predates this refresh. Its revision names, validation runs, measurements and limitations are retained as historical evidence rather than current all-pass claims.

Closes #1064.

Current revision ed83fc7e6ae73e88433ff9e04f6183118f48aacc, rebased onto upstream main bd98317eecfe832b40d401219c15207a398e78dd. Range-diff and the remaining diff were reviewed; main is an ancestor.

Fresh focused validation on this revision: 15 tests passed. The profile and its regression remain unchanged. The generated game-patch index retains current upstream entries. The configured regression harness exited 2: Splatoon Raiders has no Mac build under the local games folder; only Legends Z-A was found. No gameplay or new performance result is claimed.

Remote CI for this replacement head is pending verification by the CI agent; earlier successful checks do not validate it. Current checks.

Prior revision context and validation

The following evidence predates this rebase and retains its stated revisions and limitations.

Splatoon Raiders uses differences between 29 TIMESTAMP_TOP reports per frame to adjust its rendering resolution. Its profile previously gave all the reports in a submission the same clock source. Setting gpu_timestamps segment lets the existing NVN completion writer return the GPU start time of the segment containing each report. The render-scale setting continues to set the ceiling.

dpadr identified and tested this profile change. On their M2 MacBook Air, at render scale 0.75 before the separate ink-map change, view width went from a fixed 1440 pixels to 755–1440 and median frame time went from 22–26 ms to 18–21 ms. The game note separates those measurements from the later runs with tile reads. Reporter’s measurements

Earlier author validation

  • The new profile regression generates the header consumed by the host. It failed on upstream main and passed after the profile change. All 15 profile and documentation tests passed, including the regenerated game-patch index.
  • An arm64 native harness linked the production NVN completion writer and supplied two synthetic segment start times 16 ms apart within one submission. With the original profile it wrote a delta of zero. With the updated profile the two guest reports differed by exactly 9,830,400 NVN ticks (16 ms). Setting DM_NVN_GPU_TS=submission restored zero on the new profile. Setting DM_NVN_GPU_TS=segment produced the 16 ms result on the original one.
  • make -j4 -C dm/host GAME=0400380020056000 built the Mac host. make -C dm/gfx/tests GAME=0400380020056000 check_t_timestamp passed all 25 timestamp ABI checks. The repository’s pinned Ruff/Pyright ratchet matched its baseline with zero new findings. Across all 82 tooling test modules, 967 tests ran with 24 skipped and no failures.

Game coverage

The change only affects the Splatoon Raiders profile (0400380020056000). python3 scripts/regress.py check --games 0400380020056000 stopped at preflight because the regression root and game folders are unavailable on this Mac. The native fixture verifies guest-visible timing with controlled inputs. Gameplay and device performance figures above come from the reporter.

Historical original commit context and preserved corrective messages

These are the original published and preserved local messages before this squash. They explain historical intent and limitations; any validation named in them belongs to the original commit, not the new candidate. Repeated equivalent messages are shown once with their original identities.

seedds seedds@gmail.com — ed83fc7e6ae73e88433ff9e04f6183118f48aacc (published), 4638ccaa8af99b708959a0b3454f103e57d6528d (preserved unpublished/local)

Give Splatoon Raiders GPU segment timestamps for dynamic resolution

Co-authored-by: dpadr <34929160+dpadr@users.noreply.github.com>
Published commit context before this rebase

Historical message from 78d2453a2ffd547769a1cc44eb0095c2dc9b3695; any validation statements belong to that revision.

Give Splatoon Raiders GPU segment timestamps for dynamic resolution

@github-actions github-actions Bot added tools Tools and scripts (dm/tools, scripts) docs Documentation game: 0400380020056000 Splatoon Raiders labels Nov 3, 2026
@thehobbit85
thehobbit85 force-pushed the codex/splatoon-segment-timestamps branch 3 times, most recently from 78d2453 to 53c2718 Compare November 5, 2026 06:11
@dpadr

dpadr commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

A fresh A/B for this change on current main. Splatoon Raiders (0400380020056000, v131072), docked, on a 16 GB MacBook Air M2 (10-core GPU), macOS 27.0. I played the same stretch of the first level each time, with DM_NVN_GPUPROF (GPU busy time, not the log's GPU span).

Build Busiest pass (1707x960, ~100-400 draws) GPU busy per frame Frame time p50
main (one time per submission) 8.6-10.5 ms 15-19 ms 22-23 ms
the same app with DM_NVN_GPU_TS=segment 3.8-4.8 ms 9-12 ms 16.5-18.5 ms

Draw counts, shaders and the target size were the same in both runs. With one time per submission the game reads no GPU time, keeps its 3D view at full size and misses 60 fps. With segment times it scales the view down and holds about 60. I confirmed this after ruling out other suspects for the same slowdown (a shader-chain change, #1319's switches): the timestamp mode alone accounts for it. So this PR's one profile line is what Splatoon Raiders on main is missing.

#1350, which leaves out the idle gaps between segments, was not in either run. Without it, the last 300-frame window still crept to 18.5 ms.

Co-authored-by: dpadr <34929160+dpadr@users.noreply.github.com>
@thehobbit85
thehobbit85 force-pushed the codex/splatoon-segment-timestamps branch from 53c2718 to c450cfe Compare November 10, 2026 02:43
@thehobbit85

Copy link
Copy Markdown
Contributor Author

Closing as fully superseded by main's global segment-timestamp behavior in 3304d6a, rechecked on main 90b7cef. Segment GPU times are now the default for every game and exclude idle gaps; the old gpu_timestamps profile key and generated macro were retired. Main's Splatoon note documents both defaults and the remaining dynamic-resolution/frame-time limitations.

The five production timestamp-mode probes and native timestamp/counter-clock fixtures (25 + 21 checks) pass on sources identical to current main. This is synthetic validation, not a new gameplay or performance result. The contributor's same-route measurements and unresolved 18.5 ms window remain preserved in this PR's discussion and original branch history. No branch is deleted.

@thehobbit85
thehobbit85 deleted the codex/splatoon-segment-timestamps branch November 13, 2026 06:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation game: 0400380020056000 Splatoon Raiders tools Tools and scripts (dm/tools, scripts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Splatoon Raiders: enable the game's dynamic resolution with gpu_timestamps segment

3 participants