docs: Hookshot #2789 measured against Kokiri camera turns on a 9800X3D / RTX 4070 Ti #16
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
good first issue
gpu/amd
gpu/igpu
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
needs measurements
platform/linux
platform/macos
platform/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
ci: approved
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!16
Loading…
Reference in a new issue
No description provided.
Delete branch "TrashPanda/Longshot:docs/kokiri-turn-2789"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Camera turns in Kokiri Forest stutter (the worklist's 2.1 row), and the row's next step was to remove the CPU's wait for the GPU in
take_capture. Hookshot #2789 removes it; measured on a fast PC it does not help, because that wait is already 0 ms there. This PR records that result and points the row at the PCs where the wait may show. It changes no code.What changed
docs/tested-configurations.md: one row for the A/B of Hookshot #2789 below.docs/worklist.md: the Kokiri camera-turn row now says what Hookshot #2789 does and that it changes nothing on a 9800X3D / RTX 4070 Ti; its next step is the same A/B on a PC where the wait shows (the reporter's 14700KF, a Steam Deck), and finding the 20-26 ms frames on fast PCs. Hookshot PR numbers there are full links.Flags and settings
None. (
RX_VK_CAPTURE_GPU_LATEbelongs to Hookshot #2789, not to this PR; it is only named as the switch the runs used.)Measurements
main:
012dfc51(2026-11-12)with Hookshot #2789: ed5c6549, applied on main
012dfc51Hardware: RTX 4070 Ti 12 GB, NVIDIA 595.99.02, Ryzen 7 9800X3D, 32 GB, Ubuntu 26.04.1 (kernel 7.0)
Scene: Kokiri Forest, the test save's spawn point; headless, the test folder's settings, 60 fps cap
Method: one build, main
012dfc51with Hookshot #2789 (ed5c6549) applied. One warm-up run, then 4 runs alternatingRX_VK_CAPTURE_GPU_LATE=0,=1,=0,=1. Each run: 600 settled frames, then 1,800 frames turning the camera right (scripted input). Numbers are fromRX_VK_FRAME_LOGover the turning window only; each cell is the median of the 2 runs, with the two runs in brackets.How to reproduce: build the renderer from main
012dfc51with Hookshot #2789 applied; start at the test save's spawn point in Kokiri Forest withRX_VK_FRAME_LOGset; run withRX_VK_CAPTURE_GPU_LATE=0and=1alternately; read the turning window's frame times and thevk: a capture takenline.Baseline: main @
012dfc51(its wait, viaRX_VK_CAPTURE_GPU_LATE=0)Why not main's own binary: with its switch off, Hookshot #2789 takes main's path (the CPU waits for the GPU before the late pages are read), so one binary toggled run to run gives the same comparison without build-to-build differences.
012dfc51(its wait, viaRX_VK_CAPTURE_GPU_LATE=0)RX_VK_CAPTURE_GPU_LATE=1)take_capture's GPU waitResult: on this PC Hookshot #2789 does not help. Every difference is within run-to-run noise, and the reason is in the last row: the wait it removes is already 0 ms here, so there is nothing for it to take away. Whether it helps on a slower PC (the 14700KF from the report, a Steam Deck), where the wait may not be 0, is not measured. The same numbers are on the Hookshot PR: https://github.com/NotRexed/Hookshot/pull/2789#issuecomment-6838492536
The PR is now rebased onto main
fbd42024; the numbers still hold, since they describe the build at012dfc51named above and this PR changes no code.Testing
Tested: the A/B above, in the game: Kokiri Forest, RTX 4070 Ti / NVIDIA 595.99.02 / Ryzen 7 9800X3D / Ubuntu 26.04.1, headless with scripted input, 2 interleaved runs each way after a warm-up. After the rebase onto
fbd42024,python -I -B tests/run_all.py --jobs 4on Linux: 498 passed, 1 failed, 30 skipped; the failure istest_lift_cache(the lift scripts' imports on this PC), which fails on main too. This PR is docs only.Not tested: Hookshot #2789's newer head (c898b45d); any PC where the wait shows: a slower CPU such as the reporter's 14700KF, a Steam Deck, Windows, AMD or Intel GPUs. Until one is measured, nothing says Hookshot #2789 helps anywhere.
Needs other testers: None for this PR's own change (two lines of docs). The A/B on a slower PC tests Hookshot #2789 itself, and is the worklist row's next step; the ask for the
GPU wait for themfigure is on the Hookshot PR.Screenshots
Nothing on screen.
Risk and rollback
Docs only: nothing in the game or the build changes. The risk is a reader taking "no gain on a 9800X3D" for "no gain anywhere"; the row and the worklist line say which PC it was and what is still to measure. Reverting the commit undoes it.
Reviewer notes
The answer to "has this been tested and shown to actually help": tested, yes; helps, no, not on this PC (details under Measurements).
Issues
See https://github.com/NotRexed/Hookshot/pull/2789 (Hookshot).
Checklist
For everyone
type(scope): description).main(fbd42024).python -I -B tests/run_all.pyrun and passing (any failure that also fails onmainis named above).012dfc51; this PR itself is docs.)third_party/untouched (a new folder with aPROVENANCE.mdinstead).If applicable
Assisted-by:/Co-Authored-By:trailers.docs/tested-configurations.mdfor each measured run.Has this been tested and shown to actually help
@TrashPanda use the new issue template please!
@hckrman101 It's tested, and it shows the opposite: on this PC #2789 doesn't help, because the wait it removes is already 0 ms (0 of 600 frames wait). That's what this PR records. It changes no code: it adds the measurement and moves the Kokiri row's next step to a PC where the wait does show. 2 runs each way, interleaved: 1% low 47.0 vs 47.7 fps, frames over 20 ms 22.5 vs 21.5, within noise. The description now follows the new template, with the full table and log lines. I also merged main in.
Main (
dd02c6cc) merged in again, no force-push:docs/tested-configurations.mdconflicted only because both sides added rows; main's rows are kept first and this PR's row follows. The PR's diff is still the one row and the one worklist line.python -I -B tests/run_all.pyon the merge (Linux, CachyOS): 457 passed, 2 failed, 63 skipped. Both failures fail on main too:test_display_pointer(fixed by #187) andtest_lift_cache(this PC's lift imports).15cab92351d20db112bb@HumanBean, to your two points (my earlier reply went to the wrong handle, sorry):
Tested: yes. Shown to help: no. On a 9800X3D / RTX 4070 Ti, Hookshot #2789 makes no difference we can measure in Kokiri Forest camera turns. That is 2 runs each way, interleaved after a warm-up, with 1,800 turning frames per run, in one build with the switch off (main's wait) and on:
Whether it helps where the wait is not zero (the reporter's 14700KF, a Steam Deck) is still unmeasured, so this PR doesn't claim it helps anywhere. It records the result and makes that A/B the worklist row's next step.
Done. The description now follows
.forgejo/pull_request_template.mdin full, with Flags and settings, Testing and Risk and rollback. The measurement columns are named by commit (main @012dfc51against Hookshot #2789 @ ed5c6549), and every For everyone box is there.scripts/check_pr_description.pypasses on it.Also:
fbd42024and force-pushed with lease. The two merge commits are gone, and the head isd20db112. Thedocs/tested-configurations.mdconflict kept all of main's rows, with this PR's row after them.python -I -B tests/run_all.py --jobs 4on the rebase (Linux): 498 passed, 1 failed (test_lift_cache, which fails on main too), 30 skipped.docs: #2789 measured against Kokiri camera turns on a 9800X3D / RTX 4070 Tito docs: Hookshot #2789 measured against Kokiri camera turns on a 9800X3D / RTX 4070 TiView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.