WIP: feat(pc): add KBM actions, item wheels, DLSS 5 HDR and 30 FPS #173
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
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!173
Loading…
Reference in a new issue
No description provided.
Delete branch "TheDevil/Longshot:feat/pc-controls-neural-rendering"
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?
Superseded by focused PRs requested in review:
The patched-runtime bridge is withdrawn entirely from these submissions. No alternate runtime loader, RX_VK_DLSS_NR_DIRECT, nr_bridge or hardcoded application ID is included. The patch details and old AppID provenance are unknown; no claims about either are made. The NR path uses ordinary NGX initialization and a compatible unmodified runtime.
Credit for the original NR work: HypeZ85 (Discord valerio85), Hookshot PR #1590, commit a1f730de8c8e7b2adfbca4e0b8ac4cfbdf72834c.
All five replacement branches include main snapshot
6c9edffeusing non-rewriting merges. The 30 FPS implementation uses host pacing, not a second renderer sleep. API 23 is isolated in the input PR and API 24 in its dependent wheel PR; NR keeps main API 22. Replacement descriptions provide commit-specific measurements, defaults, risks and pending validation.Final HDR/NR stack Windows game-free run: 542 passed, 13 failures reproduced on the original unchanged baseline, 35 skipped. Windows renderers build with and without NGX. All replacements remain WIP for fresh gameplay, compatible unmodified-runtime and Linux validation. The user's installed game was not modified.
Closing this combined PR rather than rewriting its published history; its original source branch is retained.
Uploaded the combined source contribution, rebased onto main
9a186f7. The post-rebase renderer builds and 23 focused checks pass. The description records runtime measurements, HypeZ85 / valerio85 credit, reproduced baseline test failures, and the remaining draft-readiness work without claiming unperformed validation.Thanks for this, there's a lot of useful work here. The main ask: please split it into separate PRs. One commit with 67 files and about 5,800 added lines covers four features that don't depend on each other. CONTRIBUTING asks for one topic per PR, and at this size nobody can review it, test it or roll it back one piece at a time.
A split that would work:
30 FPS cap. Small, and the easiest to land first (notes below).
PC keyboard actions + separate Keyboard & Mouse / Controller bindings pages (
pc_controls,host/pc_controls.c, the lift hooks).Item wheels. On top of 2, with the local icon extraction (
nx2/pc_item_icons.py).DLSS 5 Neural Rendering port (HypeZ85's Hookshot #1590 plus the menu, lifecycle and i18n). Native HDR composition and NR scale could follow it, either in the same PR or a second one.
RX_VK_DLSS_NR_DIRECT/nr_bridge. I'd leave this out of Longshot until a maintainer has decided on it. It exists to load a user-supplied patched NGX runtime. NVIDIA's DLSS SDK license allows its runtime DLLs only unmodified and forbids modifying or reverse engineering them. The bridge also callsNVSDK_NGX_VULKAN_Init_Extwith a hard-coded application ID (0x0876232c), and NVIDIA issues those IDs per registered title. Even though the PR doesn't ship the DLL, the project would be shipping and documenting a way to run a modified NVIDIA runtime under an ID that may not be ours. Two questions:0x0876232ccome from?Until those are answered, could the bridge come out of this work entirely? The NR port can stand on the regular, unmodified NGX path.
Things that apply whichever way it's split:
git merge-tree origin/main pr/173).MKWVK_API_VERSION 22, so this PR's own change toMkwVkHost/MkwVkRendererneeds 23 once it's rebased.forge.py pr status 173lists 13 description items to fix: the status line, Verdict / How to reproduce, Before/After commits in the measurement columns, Risks, and the checklist.On the 30 FPS part:
host/nn_vi.cis unchanged, and itsfps_refreshturnsframe_rate_cap=-1into 60 (caps[i >= 0 && i < CAPS ? i : 0]). So the host's pacing, the game's limiter and the vsync event all still run at 60, and a separatesleep_untilin the renderer'spresent()holds the frames to 30. That leaves two limiters fighting, and a sleep on the game's presenting thread that the host's real-time step doesn't account for.nn_vi.calready has the console's way to do 30.present_interval(1 for 60 fps, 2 for 30) feeds the pacing period at the bottom of the file. Lettingfps_of/fps_refreshaccept 30 there, and pacing with interval 2 or a 30 period, keeps a single limiter in the place the other caps already live.HOS_FPS_MAX=30still gives 60.fps_ofandfps_stats::cap_rateboth clamp to at least 60, so the env override can't ask for the new cap.std::getenv("HOS_FPS_MAX")runs on every present and on everyoption(0)query. Elsewhere it's read once into a static.option(0)forced to 1). That's probably right, but the row's help text should say so.if(, no spaces, missing(longshot)comments). Smaller, but it matters in files that tests read as text.Happy to test the split 30 FPS PR on an RTX 5080 / Windows 11 once it's up.
Please break this out into individual PRs!
@HumanBean wrote in #173 (comment):
will do
Split as requested into #609, #613, #616, #619 and #620. The bridge has been removed from all replacements; HypeZ85 / valerio85 is credited on the NR work. Closing this combined submission as superseded; original branch retained. See each WIP PR for its independent validation and remaining live/Linux checks.
Pull request closed