WIP: feat(graphics): draw distances and low Steam Deck defaults #227
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/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
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!227
Loading…
Reference in a new issue
No description provided.
Delete branch "dukenheimer/Longshot:feat/steam-deck-draw-distances"
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
Players on the Steam Deck need controls for scenery and shadow detail without changing the game's output resolution. This ports Hookshot's distance controls and initializes the new rows to conservative values in the Steam Deck profile.
Depends on the Steam Deck profile PR #225. This branch is based on its reviewed head
0d372bf1211a370292bb6bee0a7ebef48ec82614on main0877184. The current diff against main includes that prerequisite; merge the profile first and restack this PR before review.What changed
RX_OOT_*overrides, option callbacks, and build-ID/instruction-checked guest hooks through the lifter. Existing option IDs are preserved.deck.apply), not when Auto re-chooses after a display/build change. Compiled regression cases exercise the real choice and six production assignments, including player-value preservation and canonical/alias overrides.Flags and settings
RX_OOT_FOLIAGE,RX_OOT_OBJECTS,RX_OOT_GRASS,RX_OOT_SHADOWSRX_OOT_CONTACT_SHADOWS,RX_OOT_BASE_QUALITY,RX_OOT_UNCAP_DETAIL_SLIDERSThe README and development switch/INI reference document the rows and precedence.
Measurements
Main base of the published profile:
0877184.This PR:
feat/steam-deck-draw-distances@03dfc729, rebased onto profile0d372bf1.Measured build:
7a836de2, before the rebase, based on profile55dcb427.Hardware: Steam Deck OLED, AMD Custom GPU 0932, RADV Mesa 26.2.0-devel (
git-5c65d4fc31); SteamOS 3.9.5 build 20261023.100, kernel 7.2.7-valve2.Scene: moving Kokiri Forest route, Gaming Mode, 1280x720 at 60 Hz, Auto (this PC), warm caches, frame generation 2x.
Method: one accepted, screenshot-verified warm run
LD-warm3; 2,220 shown frames. Game FPS and draws come from the replay log, shown-frame timing fromframes.csv.How to reproduce: fully re-lift/build with these hooks, select the Deck profile and its low distance defaults, load Kokiri Forest and repeat the walking/camera-pan route. The harness used
CONV_B=4to exit the conversation before measurement.7a836de2, LD-warm3No paired baseline and no measured FPS gain. The earlier “about 12% fewer draws” comparison used 2,165 draws from
LD-warm, which was the same build stuck in Saria's conversation. It is not a like-for-like route comparison and cannot establish a percentage reduction. Two earlier attempts were excluded because lower field draw counts confused the conversation-exit heuristic.The summary's
variant=U53abbb8 hookshot=941a0d91fields are stale harness labels, not build identity. The measured source is7a836de2. The rebased03dfc729binary has not been run on the Deck; the rebase follows main's removal of Auto output-resolution selection and the reviewed profile's choice gating. A new same-build paired route measurement is still needed before a performance claim.Testing
Tested: Synthetic-memory guest-hook tests and Deck default/cap/alias/saved-option fixtures passed with Windows llvm-mingw Clang and Ubuntu 24.04 GCC. Before rebase, the full Windows game-free suite had 459 passes, 74 skips and six failures reproduced on unchanged profile
55dcb427:test_fpx_sticky,test_bake_portability,test_check_third_party,test_release,test_setup_runtime,test_spawn_emit. The Deck owner fully re-lifted/built7a836de2with zero build failures and verified the accepted warm run's scene and profile settings.Not tested: Rebased binary gameplay, a paired same-scene baseline, long sessions, other areas, non-Deck GPU gameplay, and uncapped high detail. Baseline/tool-dependent skips are not hardware validation.
After rebase, the targeted guest-hook, Auto/profile and cap/override fixtures passed again with llvm-mingw Clang. The full Windows suite reported 446 passed, six failed, 72 skipped. Failures were
test_fpx_sticky,test_bake_portability,test_check_third_party,test_release,test_spawn_emit, andtest_display_pointer(undefinedwin::rx_optionin its fixture). The first five were reproduced on the previous unchanged baseline; the display test and all of its host inputs are unchanged from profilee26a8581. These failures are not claimed fixed here.After the second restack onto reviewed profile
0d372bf1, the three targeted checks (test_oot_gfx,test_auto_settings,test_deck_distances) passed, including the compiled profile re-choose regression. The older full-suite result above is not claimed as a full-suite run of this newer head.Needs other testers:
Screenshots
Not attached yet. The Deck owner's scene screenshots are local only and have not been published. Paired screenshots of the menu and same scene are still needed before this WIP is ready for review.
Risk and rollback
Lower distances intentionally change visual detail. Guest hooks depend on the supported build ID and checked instruction signatures; unexpected signatures are rejected with diagnostics. Keep the debug uncap switch off. Restore distance rows to 100%, Contact shadows On and Base quality Normal, or revert this commit to remove the controls. This needs a re-lift/host build, not only a renderer DLL swap.
Reviewer notes
Review the profile-default precedence and independent-component/scene-owner regression cases first. The renderer host structure layout is unchanged; new callback option IDs avoid existing FPS and item-wheel reservations.
Issues
Depends on #225. Credits NotRexed/Hookshot#2669; this PR does not close a performance issue or claim a measured speedup.
Checklist
For everyone
type(scope): description).main.python -I -B tests/run_all.pyrun; baseline failures named above.third_party/untouched.If applicable
d2f21fa15903dfc72953Restacked onto the reviewed Steam Deck profile #225 at
0d372bf1(main0877184). The six distance defaults now follow deck.apply, so Auto re-chooses preserve player adjustments. Added compiled regressions using the actual profile choice and production assignments, covering re-choose, saved-row and environment precedence. Three targeted checks passed on the new head03dfc729. The rebased binary still needs hardware verification; the prior route result has no paired baseline and establishes no FPS gain.View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.