docs(tested): record Deck transition and clock measurements #470

Merged
HumanBean merged 3 commits from zeldaootr/Longshot:deck-transition-evidence into main 2026-11-15 18:58:35 +00:00
Contributor

Type: docs · Risk: low · Tested on: Linux, no GPU (game-free checks); the records are Steam Deck OLED runs (SteamOS 3.9.5, RADV) · Needs: none

Why

Steam Deck OLED runs stopped under memory pressure when entering Hyrule Field on RC3, and a second problem left the GPU at 200 MHz after a failed suspend, which obscured the performance of the recovered system. These records keep the measurements behind both findings in the tested-configurations catalogue, so later Deck work can compare against them.

What changed

Twelve short run records: the baseline, the corrected guest memory accounting, sleep/wake recovery and the recorder-thread comparison, one exploratory affinity run, and a GPU timing breakdown of the Field entrance (RX_VK_PASS_TIMING=2: 27.16 ms GPU time a frame, 8.04 ms of it compute dispatches; instrumentation affects timing). main already includes the accounting change (a4c77174, #324). No code changes.

  • docs/tested: 2026-11-14-field-memory-zeldaootr-{a1,a2,b1,b2,c1,c2,c3,d1,e1,e3}.md (memory report and clock runs), 2026-11-14-field-renderer-zeldaootr-affinity-off.md and 2026-11-14-field-renderer-zeldaootr-field-gpu.md, one run each.

Measurements

Verdict: passes: records only; the twelve pass tests/test_tested_configurations.py and join the assembled catalogue (225 to 237 rows), two rounds each on main and this PR.

Hardware: Linux x86-64 server (Ubuntu 24.04), no GPU used; Python 3.15
Scene: no game: the game-free checks
Method: python3 -I -B tests/test_tested_configurations.py on main and on this branch, two interleaved rounds; scripts/tested_configurations.py --output once on each, counting the assembled table's rows
How to reproduce: run both commands from the repository root on each commit

Before: main @ aa95d35f After: this PR @ 0dabfe78
tests/test_tested_configurations.py, round 1 / round 2 25 tests, OK / OK 25 tests, OK / OK
files in docs/tested/ 79 91
rows in the assembled catalogue 225 237
aa95d35f r1: Ran 25 tests ... OK ; docs/tested: 79 files
0dabfe78 r1: Ran 25 tests ... OK ; docs/tested: 91 files
aa95d35f r2: Ran 25 tests ... OK ; docs/tested: 79 files
0dabfe78 r2: Ran 25 tests ... OK ; docs/tested: 91 files

What the records hold (instrumented RC3 builds, not main or this PR): RC3 with both guest-reporting modes in one executable and the stock renderer, on SteamOS 3.9.5, RADV VANGOGH, Mesa 26.2.0-devel, 16 GB, 1280×720, frame generation off; a copied child Kokiri save teleported to the Field. The low-memory guard stopped all three legacy-report runs. All five default-renderer corrected-report runs finished the 45 s stationary sample. At Kokiri the first two paired runs had 1,507 and 1,566 MiB less guest backing with the corrected report. The GPU stayed at 200 MHz during a 6.03 FPS sample. Following a successful deep sleep and Bluetooth wake the same corrected build reached 20.47 FPS. One exploratory run with the reserved guest CPU core released (HOS_RESERVE_CORE=0) measured 20.73 FPS; one run is too small to justify changing the default. The recorder comparison found no repeatable increase at the entrance. See the individual records for settings and all comparison arms.

Flags and settings

None

Testing

Tested: Linux, game-free: on this branch rebased onto main aa95d35f (0dabfe78), the twelve records pass tests/test_tested_configurations.py and scripts/tested_configurations.py assembles the catalogue with them; on the Deck, the runs the records describe (the guard stopped the old-report runs before an actual kernel OOM).

Not tested: Windows and other GPUs: the records describe Steam Deck runs only.

Must be tested: None

Risks

What could break: nothing at run time: measurement records only.

Turning it off: revert the commits

Compatibility: Nothing changes

Issues

See the related hardware report https://github.com/ValveSoftware/SteamOS/issues/2964 (the GPU held at 200 MHz after a failed suspend).

Checklist

Everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description) of the status line's type.
  • Why gives the reason plainly and links the issues that fit (the tracker searched).
  • Measurements has a verdict, or one line saying why there is nothing to measure.
  • Testing names what was tested, what wasn't, and what must still be tested, where and how.
  • Rebased on current main. Onto main aa95d35f, no conflict; the three commits are the same changes as before (git patch-id).
  • python -I -B tests/run_all.py passes (any failure that also fails on main is named). The full suite on main aa95d35f (Linux, g++ 13.3, the Vulkan headers set): 528 passed, 15 failed, 50 skipped; this PR adds run records only, and the one check that reads them, tests/test_tested_configurations.py, passes here. The 15 that fail on main read nothing under docs/: test_appimage_player_build, test_bake_portability, test_cpm_discovery, test_crash_dialog, test_env_on, test_lift_cache, test_lift_cleanup_error, test_make_game_cache, test_mods_size_table, test_options_budget_once, test_pipeline_tour, test_readback_late, test_vk_pgo, test_walk_key and nx2/test_texture_init_barrier.py.
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

When it applies

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • A file in docs/tested/ for each new measured run (format in docs/tested-configurations.md).
  • Docs updated.
**Type:** docs · **Risk:** low · **Tested on:** Linux, no GPU (game-free checks); the records are Steam Deck OLED runs (SteamOS 3.9.5, RADV) · **Needs:** none ## Why Steam Deck OLED runs stopped under memory pressure when entering Hyrule Field on RC3, and a second problem left the GPU at 200 MHz after a failed suspend, which obscured the performance of the recovered system. These records keep the measurements behind both findings in the tested-configurations catalogue, so later Deck work can compare against them. ## What changed Twelve short run records: the baseline, the corrected guest memory accounting, sleep/wake recovery and the recorder-thread comparison, one exploratory affinity run, and a GPU timing breakdown of the Field entrance (`RX_VK_PASS_TIMING=2`: 27.16 ms GPU time a frame, 8.04 ms of it compute dispatches; instrumentation affects timing). `main` already includes the accounting change (a4c77174, #324). No code changes. - docs/tested: `2026-11-14-field-memory-zeldaootr-{a1,a2,b1,b2,c1,c2,c3,d1,e1,e3}.md` (memory report and clock runs), `2026-11-14-field-renderer-zeldaootr-affinity-off.md` and `2026-11-14-field-renderer-zeldaootr-field-gpu.md`, one run each. ## Measurements **Verdict:** passes: records only; the twelve pass `tests/test_tested_configurations.py` and join the assembled catalogue (225 to 237 rows), two rounds each on `main` and this PR. Hardware: Linux x86-64 server (Ubuntu 24.04), no GPU used; Python 3.15 Scene: no game: the game-free checks Method: `python3 -I -B tests/test_tested_configurations.py` on `main` and on this branch, two interleaved rounds; `scripts/tested_configurations.py --output` once on each, counting the assembled table's rows How to reproduce: run both commands from the repository root on each commit | | Before: main @ aa95d35f | After: this PR @ 0dabfe78 | |---|---|---| | `tests/test_tested_configurations.py`, round 1 / round 2 | 25 tests, OK / OK | 25 tests, OK / OK | | files in `docs/tested/` | 79 | 91 | | rows in the assembled catalogue | 225 | 237 | ``` aa95d35f r1: Ran 25 tests ... OK ; docs/tested: 79 files 0dabfe78 r1: Ran 25 tests ... OK ; docs/tested: 91 files aa95d35f r2: Ran 25 tests ... OK ; docs/tested: 79 files 0dabfe78 r2: Ran 25 tests ... OK ; docs/tested: 91 files ``` What the records hold (instrumented RC3 builds, not `main` or this PR): RC3 with both guest-reporting modes in one executable and the stock renderer, on SteamOS 3.9.5, RADV VANGOGH, Mesa 26.2.0-devel, 16 GB, 1280×720, frame generation off; a copied child Kokiri save teleported to the Field. The low-memory guard stopped all three legacy-report runs. All five default-renderer corrected-report runs finished the 45 s stationary sample. At Kokiri the first two paired runs had 1,507 and 1,566 MiB less guest backing with the corrected report. The GPU stayed at 200 MHz during a 6.03 FPS sample. Following a successful deep sleep and Bluetooth wake the same corrected build reached 20.47 FPS. One exploratory run with the reserved guest CPU core released (`HOS_RESERVE_CORE=0`) measured 20.73 FPS; one run is too small to justify changing the default. The recorder comparison found no repeatable increase at the entrance. See the individual records for settings and all comparison arms. ### Flags and settings None ## Testing **Tested:** Linux, game-free: on this branch rebased onto `main` aa95d35f (0dabfe78), the twelve records pass `tests/test_tested_configurations.py` and `scripts/tested_configurations.py` assembles the catalogue with them; on the Deck, the runs the records describe (the guard stopped the old-report runs before an actual kernel OOM). **Not tested:** Windows and other GPUs: the records describe Steam Deck runs only. **Must be tested:** None ## Risks **What could break:** nothing at run time: measurement records only. **Turning it off:** revert the commits **Compatibility:** Nothing changes ## Issues See the related hardware report https://github.com/ValveSoftware/SteamOS/issues/2964 (the GPU held at 200 MHz after a failed suspend). ## Checklist ### Everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`) of the status line's type. - [x] Why gives the reason plainly and links the issues that fit (the tracker searched). - [x] Measurements has a verdict, or one line saying why there is nothing to measure. - [x] Testing names what was tested, what wasn't, and what must still be tested, where and how. - [x] Rebased on current `main`. Onto main aa95d35f, no conflict; the three commits are the same changes as before (`git patch-id`). - [x] `python -I -B tests/run_all.py` passes (any failure that also fails on `main` is named). The full suite on main aa95d35f (Linux, g++ 13.3, the Vulkan headers set): 528 passed, 15 failed, 50 skipped; this PR adds run records only, and the one check that reads them, `tests/test_tested_configurations.py`, passes here. The 15 that fail on main read nothing under `docs/`: `test_appimage_player_build`, `test_bake_portability`, `test_cpm_discovery`, `test_crash_dialog`, `test_env_on`, `test_lift_cache`, `test_lift_cleanup_error`, `test_make_game_cache`, `test_mods_size_table`, `test_options_budget_once`, `test_pipeline_tour`, `test_readback_late`, `test_vk_pgo`, `test_walk_key` and `nx2/test_texture_init_barrier.py`. - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### When it applies - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] A file in `docs/tested/` for each new measured run (format in `docs/tested-configurations.md`). - [x] Docs updated.
Assisted-by: OpenAI Codex
Assisted-by: OpenAI Codex
record the Field GPU timing breakdown
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 26s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
5a87e972a5
Assisted-by: OpenAI Codex
zeldaootr force-pushed deck-transition-evidence from 5a87e972a5
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 26s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to 8fbbb08807
All checks were successful
Website / Website on Cloudflare (pull_request_target) Has been skipped
PR description / Description follows the template (pull_request_target) Successful in 4s
2026-11-14 17:15:06 +00:00
Compare
Author
Contributor

Rebased onto main 9c9d69ed and rewritten so the run records are named with the tester handle zeldaootr (file contents unchanged). The description now has the game-free checks on main and on this branch, two interleaved runs each, with the failures that also fail on main named.

Rebased onto main 9c9d69ed and rewritten so the run records are named with the tester handle zeldaootr (file contents unchanged). The description now has the game-free checks on main and on this branch, two interleaved runs each, with the failures that also fail on main named.
zeldaootr changed title from WIP: docs(tested): record Deck transition and clock measurements to docs(tested): record Deck transition and clock measurements 2026-11-14 17:15:09 +00:00
Author
Contributor

Rebased onto main aa95d35f with no conflict (the same records, git patch-id; commits now under the noreply identity) and the description moved to the current template.
The game-free check was run again on the new base (tests/test_tested_configurations.py OK on main and here, two rounds; the catalogue assembles with the records); the Deck numbers are what the records hold, from instrumented RC3 builds, so no rebase changes them.

Rebased onto `main` aa95d35f with no conflict (the same records, `git patch-id`; commits now under the noreply identity) and the description moved to the current template. The game-free check was run again on the new base (`tests/test_tested_configurations.py` OK on `main` and here, two rounds; the catalogue assembles with the records); the Deck numbers are what the records hold, from instrumented RC3 builds, so no rebase changes them.
zeldaootr force-pushed deck-transition-evidence from 8fbbb08807
All checks were successful
Website / Website on Cloudflare (pull_request_target) Has been skipped
PR description / Description follows the template (pull_request_target) Successful in 4s
to 0dabfe781a
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Guide screenshots / Guide images and local UI source review (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 5s
2026-11-15 16:43:16 +00:00
Compare
HumanBean deleted branch deck-transition-evidence 2026-11-15 18:58:36 +00:00
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Guide screenshots / Guide images and local UI source review (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 5s
Some workflows are waiting to be reviewed.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot!470
No description provided.