Game: Hyrule Field on RX 9070 XT — first-use pipeline stalls and Windows commit pressure (AI Assisted) - Worth looking into #770
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot#770
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Longshot version
3.0.0
Channel
Release
What kind of problem
Crash, freeze or black screen
What happened
Hyrule Field on RX 9070 XT — first-use pipeline stalls and Windows commit pressure (AI Assisted)
I reproduced repeated freezes while moving through Hyrule Field as child Link on Longshot
7315957(runtime log also reports sourcecdf3d9d8). The longest stall in the original play session was a single graphics-pipeline build. Replaying a copy of the same save and using the existing load-at-create path with the resulting cache brought the route back to about 59 FPS and eliminated the multi-second stalls on that route.Test setup
HyruleField_Child, the script waited 120 presents and sent eight 540-frame movement and camera inputs through the control bridge. Each route covered about 4,320 presents. The timings below cover movement and exclude the initial area load.RX_VK_LOAD=startwith precompilation enabled. The only setting changed for the subsequent runs wasRX_VK_LOAD=create. Both setups usedRX_VK_PRECOMPILE=1,RX_VK_PRECOMPILE_COMPUTES=learned,RX_VK_NO_STATE_LIST=1,RX_VK_PIPE_SKIP=0andRX_VK_UPLOAD_BUDGET_MS=0. The shipped state list was bypassed in this local setup.For a replay, send one exclusive stick input at a time with
ly=1throughout and the following(lx, rx)values in order. Wait 540 presents after each input.Results
The play cache carried forward between runs, so the improvement reflects both the load strategy and warming the route. This sequence cannot quantify the contribution of each. The workaround used the same renderer binary throughout. Upstream already uses load-at-create by default on mesh-shader GPUs, as noted in the pipeline coverage measurements in PR #563.
1. Measure the remaining first-use misses on AMD
In the original visible session, the presentation thread reported 6,746.8 ms for a pipeline build with zero other jobs queued or running. The enclosing submit took 6,787.3 ms. The first load-at-create replay still hit a 1,119 ms submit with several pipeline builds in the same frame. The subsequent replay had one new graphics pipeline and a 608.6 ms wait. Longshot wrote that pipeline to a play-cache file on exit. The final fresh launch merged the play-cache files, indexed 11,242 pipeline notes in about 3.0 seconds, and reported zero new graphics pipeline compilations, pipeline waits or draws skipped for being unready during the session.
PR #563 already broadens shipped coverage. A useful follow-up would be to replay this moving child-Link route on current main with the shipped list enabled, on AMD at fixed 1440p. Compare fresh per-install caches with identical starting data for each arm, then repeat after a clean exit to verify persistence. Keep the AMD driver cache state comparable and report the worst frame and counts over 100 ms and one second alongside p99. If a miss remains, a slow-build log with the pipeline key or program variant, cache lookup result, and time from program creation to first use would show whether it needs a shipped state entry or can be queued earlier. The existing pipeline tour and pipeline submission issue provide ways to collect any route-specific entries.
2. Track Windows commit pressure separately from VRAM pressure
The original session reported 415–965 MB of commit headroom in several Hyrule Field samples. The texture cache held roughly 2.2–2.8 GB, while the commit guard sometimes reduced its eviction target to 132–1,053 MB. One interval showed about 7.8 GB of device memory used against roughly 15 GB allowed. Commit warnings persisted on the final run even after graphics pipeline compilation fell to zero. The data ties the seconds-long freezes to pipeline builds and shows a separate source of texture churn under Windows commit pressure.
For this case, log the commit headroom, texture budget before and after the clamp, amount evicted and re-uploaded, and time spent doing that work alongside the frame-time spike. If smaller hitches correlate with repeated trims as the system-managed pagefile grows, test whether a short hysteresis window for noncritical trims or reclaiming unused allocation blocks first reduces churn. Keep an immediate path for critically low headroom. This is a follow-up to measure, and the local workaround leaves the commit guard enabled.
Suggested regression check
Replay about 4,320 presents from a child save with forward movement, camera sweeps, and a restart between passes. For the warm pass, check for zero new graphics pipeline compilations, zero draws skipped because a pipeline was still pending, and zero frames over 100 ms in the measured movement window. Record area-entry timing separately. The confirmed result is for this route and hardware, with the existing visual settings preserved and the live saves untouched.
Where in the game
Hyrule Field
How often
Every time
Graphics card and driver version
RX 9070XT, Latest Optional
CPU, RAM and operating system
Ryzen 5700X3D, 32 gb, Windows 11
Changes from the defaults
No response
longshot_log.txt
Attached logs cover the original play session, the Hyrule Field freeze reproduced on a copy of the save, and the verification run after applying the workaround. Key log lines.txt lists the relevant lines.
Screenshots or video
No response
Before you send it
Possibly related, for context:
RX_VK_LOAD=createmeasured on a second such card (RX 5600 XT): same fps or better, loads of 50 ms at worst #805