docs(tested): Threaded rendering (#588) in the Market on a 6-core Linux desktop, interleaved Off and Auto #688
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
beanstalk: approved @ 1697603
beanstalk: approved @ 2c5a62e
beanstalk: approved @ 4fd82b7
beanstalk: approved @ 64d6d09
beanstalk: approved @ 6f91fae
beanstalk: approved @ 70a78f9
beanstalk: approved @ 8d361dc
beanstalk: approved @ 9d8356e
beanstalk: approved @ abf2227
beanstalk: approved @ d82f202
beanstalk: approved @ e5f1e40
beanstalk: approved @ ee8ab5f
ci: approved
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
regression
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
ci: approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!688
Loading…
Reference in a new issue
No description provided.
Delete branch "GrimVisage/Longshot:docs/tested-market-threaded-588"
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?
Type: docs · Risk: low · Tested on: Linux (Fedora 45), Ryzen 5 5600X, RX 9070 XT (RADV 26.2.7) · Needs: none
Why
#588 turned Threaded rendering on by default (Auto) where the game has 12 or more logical processors, and lists AMD, Linux and PCs at the cutoff as untested. A 6-core / 12-thread Ryzen 5 5600X is exactly at that cutoff, where the render and recorder threads have the least room beside the game's own threads. This PR records four interleaved runs from that PC in the Market, standing and moving, so the setting's default has numbers from an AMD Linux desktop at its cutoff. The scene is the one #597 reports rough frame times in (the Castle Town market by day as child Link). See #588, see #597.
What changed
Four run files under
docs/tested/, nothing else. They compare Threaded rendering Off against Auto (on here) in one build of main6c9edffe, on a Ryzen 5 5600X with an RX 9070 XT on Fedora 45.docs/tested/2026-11-14-threaded-rendering-market-grimvisage-run01.mdtorun04.md, one run each, in the format ofdocs/tested/README.md: run01 and run04 Off, run02 and run03 Auto, each with its five parts' numbers.The runs these files record
One build of main
6c9edffe(with #588), built as a player's (the Linux container, then the AppImage's--cli --fsr); the two sides differ only in the options file'sthreaded_rendering=(2 Off, 0 Auto; the log saidvk: Threaded rendering: Auto: on, the render thread and the recorder thread (12 logical processors)in every Auto run andOffin every Off run).Each run: a fresh copy of one child Market save (
longshot_ctl.py launch --save --slot), uncapped (HOS_FPS_MAX=240), the frame-time log on (RX_VK_FRAME_LOG), Disable camera centering On, the upscaler Game's own, 1280x720 window. Link was steered by his position through the control bridge (statuspos and camera yaw, the left stick held without gaps), on the gate's centre line, in five parts of 60 s each:The game's clock runs on and the Market reaches night about 5 minutes after loading, so before each part the clock was set to 12:00 with the Debug tab's Set time (Debug tools on for the test run only,
HOS_OOT_CHEATS=1, the action sent throughHOS_INPUT_LIVE; the log'scheats: requested 12:00checked each time, and a picture taken). Two warm-up runs (Auto, Off), then four measured runs interleaved Off, Auto, Auto, Off. No NPC was in the way in any run (the route sidesteps a bump; none happened).Measurements
Verdict: nothing to measure in the game for this PR: docs only. The files pass their format check, and the game-free suite gives the same result as on main (CONTRIBUTING.md, "Measurements":
docs).Hardware: Ryzen 5 5600X, 31 GB, Fedora 45 (kernel 7.3.3), Python 3.15.2
Scene: none (game-free checks)
Method:
python -I -B tests/test_tested_configurations.py, andpython -I -B tests/run_all.pyon main and on this PRHow to reproduce: the two commands above from the repository root
aa95d35f45439546tests/test_tested_configurations.pytests/run_all.pyWhat the runs show
Baseline: main @
6c9edffewith Threaded rendering Off, against the same build with it on Auto: #588 is merged, so its effect is the setting, not a main-against-PR build.Medians of the two runs a side (run01/run04 Off, run02/run03 Auto); fps, 1% low, median and p99 frame time from
RX_VK_FRAME_LOGover each part's presents; the replay's submit time and GPU time the medians of the log's status lines in each part.6c9edffe6c9edffeThe two runs of a side agree within about 1 fps in every part. Auto is ahead in every part's fps, median and p99; the one number behind is the laps' 1% low (Off 18.5 and 20.2, Auto 17.1 and 18.8).
A sampled pair (the same routine with
HOS_PROFILE=5andHOS_SAMPLE_ALL, one run a side, read withscripts/crit.py; its fps is lowered by the sampler and not used above): with Off the Presentation thread runs the replay (26.6% of a core); with Auto it is 1.0%, and the render thread (36.4%) and the recorder thread (30.0%) take it. No thread is saturated, the busy cores average 3.1 (Off) and 3.6 (Auto) of 12, the six BaseProcExecutor workers run 26 to 28% (Off) and 28 to 30% (Auto) each, and sead::MainThread is blocked in about 85% of instants on both sides: the extra threads do not look short of cores here, and moving stays bound by the game's own job chain, as in #389.A status line of each side, in the laps part:
Flags and settings
None.
Testing
Tested: the files' format check (
tests/test_tested_configurations.py) and the whole game-free suite on Linux (Fedora 45), on mainaa95d35fand on this PR; the 12 failures are the same on both. The runs themselves were made in the game on this PC (Ryzen 5 5600X, RX 9070 XT, RADV 26.2.7), as described under What changed; no flash, missing object or device loss was seen in the Auto runs.Not tested: the website's catalogue built from these files (it reads
docs/tested/directly; not built here); Hyrule Field's culling tables, which #588 names as still open with it on, were not part of these runs.Must be tested: None
Risks
What could break: nothing the game, the builds or the checks run; at most the website's catalogue, if a file read badly there.
Turning it off: revert the commit (it only adds files under
docs/tested/).Compatibility: Nothing changes.
Issues
See #588
See #597
Checklist
Everyone
type(scope): description) of the status line's type.main.python -I -B tests/run_all.pypasses (any failure that also fails onmainis named).third_party/untouched (a new folder with aPROVENANCE.mdinstead).When it applies
Assisted-by:/Co-Authored-By:trailers.docs/tested/for each new measured run (format indocs/tested-configurations.md).🤖 Generated with Claude Code
https://claude.ai/code/session_015WSf61FhmEj27PMf2u9LFq
WIP: docs(tested): Threaded rendering (#588) in the Market on a 6-core Linux desktop, interleaved Off and Autoto docs(tested): Threaded rendering (#588) in the Market on a 6-core Linux desktop, interleaved Off and AutoLinked #597 (the Market's frame times by day as child Link), which these runs measure.
Rebased onto main
9e6f231d: no change to the files. The commit's AI trailers now sit in their own block (with Assisted-by:), as CONTRIBUTING asks. The game-free suite gives the same result as main (503 passed, 12 failed, the same 12, 78 skipped); the description's numbers moved to the new base.ab7bfb06404543954655Rebased again, onto main
aa95d35f, replacing the forge's merge of main into the branch (it brought only #742); the previous comment's commit 9f425699 never reached the forge. No change to the files; the same 12 failures on main and on this PR.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.