docs(tested): the committed play profile on a Steam Deck OLED, on the compute path: about 10% fewer instructions a frame #591
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!591
Loading…
Reference in a new issue
No description provided.
Delete branch "p0lux/Longshot:docs/tested-play-profile-deck"
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 (SteamOS), Steam Deck OLED (RADV VANGOGH) · Needs: none
Why
The renderer's play profile (#569) was recorded and measured on an RTX 3090 with mesh shaders, and
assets/profiles/README.mdlists the compute fallback as not yet covered. A Steam Deck draws its mesh programs through that fallback, so nobody knew whether the committed profile helps there or costs. It helps, by more than on the 3090: this adds the run that says so.What changed
One run file, no code: main built without the play profile and with the committed one, on a Steam Deck OLED.
docs/tested/2026-11-14-play-profile-deck-p0lux-run01.md(new), the run's row in the format ofdocs/tested/README.md.Measurements
Verdict: the committed profile helps on a Steam Deck: 9.8% fewer instructions and 12.8% fewer cycles a frame on the replay thread, 4.4 ms less replay, 28.5 to 31.5 fps in a heavy view.
Baseline: both columns are main @
414f56e2, the back end built alone with the same flags; the only difference isRX_VK_PGO=<the committed profile, unpacked>for the second. This PR adds no code, so main against this PR would compare a build with itself. Main is at25726217now:assets/profiles/longshot_vk.profdata.xzis the same file there, and the record is of the commit it names.Hardware: SteamOS 3.9.5 (kernel 7.2.7-valve2), Steam Deck OLED: AMD Custom APU 0932 (4 cores, 8 threads), RADV VANGOGH, Mesa 26.2.0-devel, 16 GB shared with the GPU; the GPU's clock fixed at 1600 MHz
Scene: a heavy view from a save, standing still, about 2,150 draws a frame; no screen (headless), handheld profile, Minimum preset, the game's own upscaler, no frame generation, no cap; no mesh shaders (
vk: no mesh shaders: task and mesh programs run as compute shaders), no VRAM mirrorsMethod: the game and host built from main
9c9d69ed; the back end built alone from main414f56e2(nothing undergpu/differs from9c9d69ed) with the Linux builder's clang (LLVM 23.1.5), and swapped in that game folder. Each run starts the game, loads the save by script, waits 3 log windows, then measures 720 presents: fps by the clock, the log's replay time, the render thread's user-space cycles and instructions a frame (perf stat -t). Two runs each after a warm-up start, alternated with two other renderers, the second round in the reverse order; the median of two is their mean. No per-frame log in these runs, so no p99 or 1% low.How to reproduce: build the back end twice from one commit, with and without
RX_VK_PGO=<file>, and run the same save with each414f56e2, no play profile414f56e2, the committed play profileRead with care. One machine, one scene, two runs each. The fps of two runs of one renderer differ by up to 1.6 here; the instruction counts repeat within 0.6%, and they are what the profile changes. Other scenes were not measured for this record.
Flags and settings
None.
Testing
Tested:
python -I -B tests/test_tested_configurations.py: 24 of its 25 checks pass, the new file among them; the 25th (test_cli_output_file_is_utf8_and_stdout_stays_empty) fails the same way on main on this machine (Python 3.9 has nonewlineargument toPath.write_text).Not tested: other scenes, other hardware, Windows: this is one record of one machine.
Must be tested:
None.
Risks
What could break: nothing: one documentation file.
Turning it off: revert the commit.
Compatibility: Nothing changes.
Issues
See #402
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).WIP: docs(tested): the committed play profile on a Steam Deck OLED, on the compute path: about 10% fewer instructions a frameto docs(tested): the committed play profile on a Steam Deck OLED, on the compute path: about 10% fewer instructions a frameView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.