Skip to content

DM_NVN_GPU_TS_PAD: GPU headroom for a game's dynamic resolution, off by default (stacked on #1350; Splatoon Raiders 0400380020056000) - #1437

Open
dpadr wants to merge 2 commits into
seedds:mainfrom
dpadr:sr-gpu-ts-pad
Open

dpadr wants to merge 2 commits into
seedds:mainfrom
dpadr:sr-gpu-ts-pad

Conversation

@dpadr

@dpadr dpadr commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #1350. Ready for review once #1350 is in; until then the diff shows its commit too. This branch is #1350's commit plus one commit. Review only the top commit, cda83011.

What and why

Once a game sees its real GPU time, through segment timestamps (#1130 for Splatoon Raiders) with the idle gaps left out (#1350), agl's dynamic resolution fills the frame budget exactly. The host's own GPU work and frame-to-frame spikes are not in that budget, so frames past 16.7 ms drop. On a 16 GB MacBook Air M2, docked, Splatoon Raiders' GPU median reached 18.7 ms against 16.7.

DM_NVN_GPU_TS_PAD=<factor> (1.0 to 2.0, default 1, so off) stretches each counter report's time from its submission's first segment start. The game then measures its GPU work that much longer and lowers its resolution until the padded time fits. With 1.10, the real GPU time stays about 9% under the frame.

This is a tuning switch, not a default. It trades some resolution for headroom, which a Mac with plenty of GPU to spare does not need. It also stretches every timestamp a game reads, not only the ones its resolution controller uses.

Checked

Docs

  • docs/env_switches.tsv lists the switch
  • A chain tool changed (no)
  • No game files, keys or data extracted from a game in the change

🤖 Generated with Claude Code

beecrepaldi-afk and others added 2 commits November 5, 2026 13:58
…ents, so agl's dynamic resolution stops swinging and distant detail stops flickering (issue seedds#1290)

A span of timestamp reports read the gaps where the GPU waited for the host to
translate the next segment (about 5-6 ms of a Mario Kart World frame on an M5),
so agl's dynamic resolution saw the GPU over budget, stepped down, then back up.
rep_ticks now subtracts the idle time before the report's segment
(seg_gap_before). DM_NVN_GPU_TS=segment_gaps keeps the old times.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…om for a game's dynamic resolution (on seedds#1350)

With gap-free segment timestamps Splatoon Raiders sees its real GPU time and fills the frame (GPU median 18.7 ms against 16.7 on a 16 GB M2 Air, docked), dropping frames. DM_NVN_GPU_TS_PAD=<factor> (1.0 to 2.0, default 1, off) stretches each report's time from the submission's first segment start, so the game lowers its resolution until the padded time fits: 1.10 leaves about 9 % of the frame for the host's own GPU work and spikes. A tuning switch, not a default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added nvn NVN on Metal and its tests (dm/gfx/nvn, dm/gfx/tests) docs Documentation game: 0400C3F00006E000 A game profile labels Nov 6, 2026
@dpadr
dpadr marked this pull request as ready for review November 6, 2026 04:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation game: 0400C3F00006E000 A game profile nvn NVN on Metal and its tests (dm/gfx/nvn, dm/gfx/tests)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants