WIP: docs(vk): record the Hyrule Field slowdown and A/B plan #363

Draft
Buasfe wants to merge 1 commit from Buasfe/Longshot:docs/issue-348-renderer-ab into main
First-time contributor

Why

Riding through Hyrule Field on Longshot v3.0.0-rc.3 led to a large FPS drop on my RTX 3070, even without changing areas. I put the timing evidence and a repeatable A/B plan in one place so we can check whether current Longshot still behaves the same way.

What changed

  • docs: docs/hyrule-field-dispatch-investigation.md records the rc.3 dispatch timings, what the Nsight review suggests, and how to compare early and late runs with the same camera and workload.
  • The older Hookshot memory, eviction, upload and rollback results are included as background. The diff changes documentation only.

Flags and settings

None. The protocol uses existing logging and profiling switches.

Measurements

main: cf605c85 (2026-11-14)
this PR: docs/issue-348-renderer-ab @ cf6f7ded

Baseline: rc.3 @ 0c74253d at 1,800 presents. These columns compare stages of the saved diagnostic run.

Saved diagnostic run: Longshot v3.0.0-rc.3 (release tag 0c74253d, log source fingerprint cb01b5a3). RTX 3070 8 GB, driver 621.14, Ryzen 7 5800X3D, 32 GB DDR4, Windows 11. Adult Hyrule Field on Epona, 3440×1440, upscaling and frame generation off. One inspected run with RX_VK_PASS_TIMING=1. Each pass timing report covers 600 presents.

Metric rc.3 @ 0c74253d at 1,800 presents rc.3 @ 0c74253d at 2,400 presents rc.3 @ 0c74253d at 3,000 presents
Dispatch 26fe0c70ab9fc547 9.225 ms/frame 10.412 ms/frame 21.499 ms/frame
Nearby VRAM status, used / allowance 6.4 / 6.9 GB 6.3 / 6.9 GB 6.1 / 6.8 GB
Nearby 120-present FPS 33.1 20.0 18.2
vk:   m   9.225 ms     0.9 x  10288.1 us       0.9 items    0.00 MB  dispatch  prog 26fe0c70ab9fc547
vk:   m  10.412 ms     0.9 x  11633.2 us       0.9 items    0.00 MB  dispatch  prog 26fe0c70ab9fc547
vk:   m  21.499 ms     1.0 x  21498.7 us       1.0 items    0.00 MB  dispatch  prog 26fe0c70ab9fc547

These figures compare stages of one rc.3 run. They provide no current-main comparison or estimate of an FPS improvement. The timestamps affect overlap, and the VRAM status is a periodic sample. The repeat instructions are in the new document.

Testing

Tested: On Windows, 22 tests passed in tests/test_check_pr_description.py and 32 in tests/test_forge_pr.py. Checked all 21 data values in the three timing rows, the total instrumented span time and both development-guide links against local source/evidence. git diff --check passed.

Not tested: Full game-free suite deferred to avoid running the compiler-heavy checks during gameplay. No fresh build, gameplay run, current-main A/B or new GPU capture. The original Nsight observations are reported as hypotheses and supporting evidence.

Needs other testers:

  • NVIDIA 8 GB on current main: repeat the Field loop and matched early/late static views first with pass timing off, then in a diagnostic-only repeat. Check whether the FPS drop and corresponding dispatch-time increase reproduce. Please report the exact commit, hardware and settings (request to open).

Screenshots

Nothing on screen.

Risk and rollback

Documentation only. Reverting the commit removes the protocol and historical summary.

Reviewer notes

The current tree includes sparse mirrors #250 and host memory accounting changes #324. Mirror sync #326 targets a separately timed path. The first question is whether the Field slowdown persists after these baseline changes. I'd keep any counter placement change or legacy trim rollback in its own PR once it has a current reproduction.

I collected the gameplay observations, logs and Nsight evidence. OpenAI Codex assisted with the prior Hookshot source investigation, patches and test automation, and with this Longshot source review, log verification, documentation and A/B plan. The branch commit carries the attribution trailer.

Issues

See #348

Checklist

For everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description).
  • Rebased on current main.
  • python -I -B tests/run_all.py run and passing (any failure that also fails on main is named above). Full suite deferred. Targeted verification passed.
  • Tested in the game, or what wasn't is named under Testing.
  • Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests). The test request is pending.
  • Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported. No current-main test was performed. Historical rc.3 measurements are listed above.
  • 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.

If applicable

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Docs updated.
## Why Riding through Hyrule Field on Longshot v3.0.0-rc.3 led to a large FPS drop on my RTX 3070, even without changing areas. I put the timing evidence and a repeatable A/B plan in one place so we can check whether current Longshot still behaves the same way. ## What changed - docs: `docs/hyrule-field-dispatch-investigation.md` records the rc.3 dispatch timings, what the Nsight review suggests, and how to compare early and late runs with the same camera and workload. - The older Hookshot memory, eviction, upload and rollback results are included as background. The diff changes documentation only. ## Flags and settings None. The protocol uses existing logging and profiling switches. ## Measurements main: `cf605c85` (2026-11-14) this PR: `docs/issue-348-renderer-ab` @ `cf6f7ded` Baseline: rc.3 @ 0c74253d at 1,800 presents. These columns compare stages of the saved diagnostic run. **Saved diagnostic run:** Longshot v3.0.0-rc.3 (release tag `0c74253d`, log source fingerprint `cb01b5a3`). RTX 3070 8 GB, driver 621.14, Ryzen 7 5800X3D, 32 GB DDR4, Windows 11. Adult Hyrule Field on Epona, 3440×1440, upscaling and frame generation off. One inspected run with `RX_VK_PASS_TIMING=1`. Each pass timing report covers 600 presents. | Metric | rc.3 @ 0c74253d at 1,800 presents | rc.3 @ 0c74253d at 2,400 presents | rc.3 @ 0c74253d at 3,000 presents | |---|---:|---:|---:| | Dispatch `26fe0c70ab9fc547` | 9.225 ms/frame | 10.412 ms/frame | 21.499 ms/frame | | Nearby VRAM status, used / allowance | 6.4 / 6.9 GB | 6.3 / 6.9 GB | 6.1 / 6.8 GB | | Nearby 120-present FPS | 33.1 | 20.0 | 18.2 | ```text vk: m 9.225 ms 0.9 x 10288.1 us 0.9 items 0.00 MB dispatch prog 26fe0c70ab9fc547 vk: m 10.412 ms 0.9 x 11633.2 us 0.9 items 0.00 MB dispatch prog 26fe0c70ab9fc547 vk: m 21.499 ms 1.0 x 21498.7 us 1.0 items 0.00 MB dispatch prog 26fe0c70ab9fc547 ``` These figures compare stages of one rc.3 run. They provide no current-main comparison or estimate of an FPS improvement. The timestamps affect overlap, and the VRAM status is a periodic sample. The repeat instructions are in the new document. ## Testing **Tested:** On Windows, 22 tests passed in `tests/test_check_pr_description.py` and 32 in `tests/test_forge_pr.py`. Checked all 21 data values in the three timing rows, the total instrumented span time and both development-guide links against local source/evidence. `git diff --check` passed. **Not tested:** Full game-free suite deferred to avoid running the compiler-heavy checks during gameplay. No fresh build, gameplay run, current-main A/B or new GPU capture. The original Nsight observations are reported as hypotheses and supporting evidence. **Needs other testers:** - NVIDIA 8 GB on current main: repeat the Field loop and matched early/late static views first with pass timing off, then in a diagnostic-only repeat. Check whether the FPS drop and corresponding dispatch-time increase reproduce. Please report the exact commit, hardware and settings (request to open). ## Screenshots Nothing on screen. ## Risk and rollback Documentation only. Reverting the commit removes the protocol and historical summary. ## Reviewer notes The current tree includes [sparse mirrors #250](https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/250) and [host memory accounting changes #324](https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/324). [Mirror sync #326](https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/326) targets a separately timed path. The first question is whether the Field slowdown persists after these baseline changes. I'd keep any counter placement change or [legacy trim rollback](https://github.com/NotRexed/Hookshot/pull/2825) in its own PR once it has a current reproduction. I collected the gameplay observations, logs and Nsight evidence. OpenAI Codex assisted with the prior Hookshot source investigation, patches and test automation, and with this Longshot source review, log verification, documentation and A/B plan. The branch commit carries the attribution trailer. ## Issues See #348 ## Checklist ### For everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`). - [x] Rebased on current `main`. - [ ] `python -I -B tests/run_all.py` run and passing (any failure that also fails on `main` is named above). Full suite deferred. Targeted verification passed. - [x] Tested in the game, or what wasn't is named under Testing. - [ ] Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests). The test request is pending. - [ ] Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported. No current-main test was performed. Historical rc.3 measurements are listed above. - [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. ### If applicable - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Docs updated.
docs(vk): record the Hyrule Field slowdown and A/B plan
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
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 11s
Website / Website on Cloudflare (pull_request_target) Has been skipped
cf6f7ded50
See #348.

Assisted-by: OpenAI Codex
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
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 11s
Website / Website on Cloudflare (pull_request_target) Has been skipped
This pull request is marked as a work in progress.
Some workflows are waiting to be reviewed.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u 'docs/issue-348-renderer-ab:Buasfe-docs/issue-348-renderer-ab'
git switch 'Buasfe-docs/issue-348-renderer-ab'
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!363
No description provided.