feat(vk): enable PsychoV35 upscaler compatibility by default #608
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 @ 8015c9a
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!608
Loading…
Reference in a new issue
No description provided.
Delete branch "futondestroyer/Longshot:codex/psychov35-default"
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: feat · Risk: medium · Tested on: Windows, RTX 4070 · Needs: prerequisite merges, Linux build, AMD HDR and broader rollout validation
Why
Selecting Native HDR PsychoV35 should retain a supported upscaler without requiring an environment opt-in. This enables its compatibility routes automatically while keeping Vanilla as the default tone mapper.
Dependent WIP: do not merge before these four support fixes and their required validation:
Their commits are temporarily stacked here for integration testing. After they land, rebase to leave only the rollout commits. No upstream PR was merged by this work. Formal dependency-link creation returned HTTP 404; the prerequisites remain explicit here.
What changed
Enable the supported PsychoV35 upscaler routes when that tone mapper is selected, without extra environment setup. Keep an explicit disable for troubleshooting and retain the backend's existing safety checks.
upscaler_rows::psychov35_compatibilitysupplies one default policy to the temporal scene gate, FSR 3.1 HDR callback and independent FSR FG gate. Unset/empty or nonzero enables compatibility; explicit 0 disables it. Existing once-per-process caching, Native HDR selection, supported engines, matching formats, camera/depth and multiplier guards remain.The earlier settings gap was a harness editing the tone mapper after HDR Off correctly hid its row. Set Native HDR before editing that row; skip it in SDR/Expanded. No upscaler-dependent menu restriction was removed. An older control bridge also cannot step directly to numeric Upscaler value 2: DLAA is DLSS Native. Its controls below therefore use separate cold launches with the saved DLAA setting.
Measurements
Verdict: both corrected interleaved pairs retain actual FSR upscaling and AMD generation with the flag unset. Every settled PsychoV35 FSR FG interval is 600/600 AMD-made with zero missing inputs, and the last upscaler status interval also reports 600 actual AMD FSR upscaler draws. DLSS, Off, replacement, Vanilla/SDR and returns complete normally. NGX and cold-DLAA controls pass; explicit 0 restores the expected fallback. All eight processes exited normally (exit 0).
main:
6c9edffethis PR: codex/psychov35-default @
a9653209(production code3fa9b801; results-only commit on top)Baseline: Before: this PR @
3fa9b801, RX_VK_PSYCHOV35_DLSS=1, representing the previous manual opt-in behavior, compared with the same code and flag unset. Game runs use the unchanged agreed development base514591a3plus the common scene matcher and four prerequisite fixes. Main alone lacks those combined support paths; this isolates automatic compatibility from them instead of making a new full game build.Hardware: RTX 4070 12 GB, NVIDIA 621.01; Core i7-13700F, 32 GB; Windows kernel 26300 / 26H2.
Scene: daylight Lon Lon Ranch alley, one fresh copied checkpoint per process, stationary camera; 2560x1440 output and 2560x1421 client, Native HDR paper white 200 / peak 1000, sharpness 0, cap 61. Forced TAAU replacement on NVIDIA. NVIDIA FG disabled/Built-in provider in the main matrices; FSR FG explicitly enabled at 2x in PsychoV35 FSR phases and Off otherwise.
Method: explicit 1/unset/explicit 1/unset, runs a3/b3/c3/d3. Seven phases each; FG phases advance 1250+ presents, other phases 650+. Validate actual settings, stable play, engine evaluations and the last complete 600-request generation interval. Last GPU-time report per phase, then median across the two runs per configuration, is shown below. World time/animation and GPU clocks were not frozen.
How to reproduce: run that phase order at the same checkpoint, restarting between environment configurations; read real drawn/generated counts rather than the menu row. Nineteen relevant production functions/helpers match the measured pack and current source byte-for-byte; its existing base pipeline-creation wrappers are retained. The actual current-source Windows renderer is also built independently.
3fa9b801, RX_VK_PSYCHOV35_DLSS=13fa9b801, flag unset (new default)These capped samples are descriptive parity observations, not uncapped FPS gains or statistical performance-equivalence proof. The last per-phase VRAM reports span 6.8–8.0 GB; these are samples, not peaks. The single explicit 0 rollback process is a functional control, not a repeated performance baseline. Adoption cost versus the previous fallback on other hardware remains unmeasured.
Additional controls:
An earlier iteration at
bf19a4c3generated AMD frames but rejected FSR upscaling under unset because its separate HDR callback still required 1. Correction3fa9b801and the expanded regression address that omission; all table data above uses the corrected code. Earlier failed/partial harness runs are excluded.Flags and settings
The existing compatibility switch defaults on; AMD frame generation retains its separate off-by-default opt-in.
Restart after editing longshot_env.txt. Off and the spatial/FXAA replacement remain independent of the compatibility switch. No automatic HDR, tone-mapper selection or saved-option default change.
Testing
Tested: corrected current-source Windows renderer 4s / 0 failed and link success (initial clean build 56s); corrected isolated pack 6s compile / 10s total, 0 failed. Fifteen focused combined-source checks pass. New environment regression compiles and fails specifically at the actual HDR callback on the previous implementation, and passes here. The earlier negative control also fails unchanged prerequisite admission. Eight game processes/33 phases and eight run fragments are included; repository fragment validation passes. Relevant measured production functions match current code.
Final full suite: 537 passed, 14 failed, 35 skipped in 119s here; clean main
6c9edffe531 passed, the same 14 failed, 35 skipped in 117s; unchanged combined control757ba924536 passed, the same 14 failed, 35 skipped in 119s. No PR-only failure. Shared failures:tests/test_appimage_player_build.py,tests/test_cpm_discovery.py,tests/test_crash_dialog.py,tests/test_env_on.py,tests/test_lift_cleanup_error.py,tests/test_linux_preflight.py,tests/test_make_game_cache.py,tests/test_oot_state_tap.py,tests/test_readback_late.py,tests/test_release.py,tests/test_tested_configurations.py,tests/test_vk_pgo.py,tests/test_vram_budget_row.py,tests/test_walk_key.py.Not tested: Linux build/runtime, AMD/Intel hardware, FSR4 runtime on this NVIDIA card, other drivers/resolutions/scenes, dynamic-resolution/Auto and every scale on the rollout head, native game-network gameplay without the replacement override, expanded-HDR runtime, extended play, calibrated HDR luminance, uncapped performance and peak-memory behavior. General Lake Hylia/Field transition fallback/flicker is not claimed fixed.
Must be tested:
Screenshots
Captured output from the corrected rollout code at
3fa9b801on the unchanged development base514591a3, with all four support fixes and the common scene matcher. Fresh copies of the same daylight ranch checkpoint; 2560x1440 output, Native HDR PsychoV35, 200/1000 nits, RTX 4070/NVIDIA 621.01. These unmodified PNGs show visible output, not calibrated HDR luminance or complete temporal-quality proof. World time and animation were not frozen.Baseline: explicit compatibility opt-in (
RX_VK_PSYCHOV35_DLSS=1), FSR3 at 67%Automatic compatibility: same code, flag unset, FSR3 at 67%
Automatic compatibility: flag unset, DLSS at 67%
Automatic compatibility: flag unset, cold-launch DLAA Native
Risks
What could break: configurations previously falling back may now run a temporal backend, exposing its colour/history, memory or GPU-cost limitations. Existing format, context, depth/camera and reset guards still reject unusable frames. Actor/HUD ghosting remains backend dependent; still captures do not establish full temporal quality.
Turning it off: RX_VK_PSYCHOV35_DLSS=0 and restart, or revert the rollout commits. This does not undo independent Off/TAAU support or prerequisite Vanilla PQ metadata corrections. RX_VK_FSR_FG=0 disables AMD generation separately.
Compatibility: Vanilla remains the default tone mapper. No save/option schema, public renderer ABI, SDK binary, shader or cache-format change in the rollout itself. The stacked TAAU shader change belongs to its prerequisite PR; its generated headers and formats pass the focused checks. Third-party source is untouched.
Reviewer notes
For this PR's own change, inspect
bf19a4c3and3fa9b801relative to combined prerequisite tree757ba924. Source base6c9edffeand final read-only merge-tree check against current main are clean; no upstream merge was performed. The larger main diff temporarily includes prerequisite commits. After their merges, rebuild/rebase the rollout-only diff and retain exact tested-commit qualifications.Issues
See #226 . No closure claim for #344 . Merged #400 fixes the confirmed ranch shader-permutation cause; broader transfer behavior remains separate.
Checklist
Everyone
type(scope): description) of the status line's type.main. (Validated6c9edffe; dependency-only rebase still required after prerequisites land.)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 in docs/tested-configurations.md).tests/that reads changed source updated in this PR, not weakened.Implementation pushed at
bf19a4c3over combined prerequisite tree757ba924. Both temporal and independent FSR FG admission share the default-on policy; explicit0 remains rollback. Windows renderer compiles/links (56s,0 failures),15 focused fixtures pass, and the new runtime regression fails the unchanged combined control as intended. Full suite comparison and isolated game validation are next. The earlier settings gap is confirmed to be test ordering after HDR Off hid the row, not an upscaler menu restriction. Prerequisite commits are temporarily stacked here; do not merge this WIP before527/528/536/605 and required coverage.Runtime validation caught a third opt-in gate: FSR3 independent FG succeeded with unset, but the shared upscaler HDR callback still required1. Corrected that callback at3fa9b801 and strengthened the environment regression to execute it; the previous implementation now fails the callback assertion. The first matrix is retained as failed FSR-upscaler evidence, not a pass. Other observed DLSS/NGX/DLAA controls passed. Rebuilding and repeating the corrected matrix; this remains a dependent WIP. Formal blocker-link API returned404, so prerequisite links remain explicit in the description.
Captured output from the corrected rollout code at3fa9b801 on the unchanged development base514591a3, with all four support fixes and the common scene matcher. Fresh copies of the same daylight ranch checkpoint;2560x1440 output, Native HDR PsychoV35,200/1000 nits,RTX4070/NVIDIA621.01. These unmodified PNGs show visible output, not calibrated HDR luminance or complete temporal-quality proof. World time and animation were not frozen.
Baseline: explicit compatibility opt-in (
RX_VK_PSYCHOV35_DLSS=1), FSR3 at67%Automatic compatibility: same code, flag unset, FSR3 at67%
Automatic compatibility: flag unset, DLSS at67%
Automatic compatibility: flag unset, cold-launch DLAA Native
Completed the corrected eight-process,33-phase matrix at code3fa9b801; results are committed at
a9653209and four screenshots are attached. Both interleaved unset runs retain600 actual FSR upscaler draws and600/600 AMD-made frames with zero missing inputs in each settled Psycho phase. NGX control also reaches600/600; cold-DLAA and explicit0 rollback pass. All processes exit normally and runtime/shared lock are restored. Final suite537pass/14fail/35skip matches the same14 failures on clean main6c9edffe and the unchanged prerequisite stack; Windows renderer builds. Linux T-FN7L and AMD HDR T-HFTK await maintainer testing-wanted enablement. This remains WIP pending prerequisite merges, Linux/AMD coverage and final merged-stack transfer/cost validation. @Beanstalk Please build current heada9653209on Linux via the documented renderer-only workflow and run psychov35, temporal_history, upscaler_rows, taau, upscale_fallback, fsr_uniform_ownership and present_source_crop fixtures. Publish exact commit,compiler/OS and safe results; no game/build artifacts. No merge.@futondestroyer only members of
BigBeanscan start the farm. One of them can approve this request by reacting 👍 to it.Clarified the description-check formatting: plain change summary, exact same-build comparison column commits, flag summary, and expected results/owners for external and post-merge checks. Measurements and code are unchanged. The only applicable unchecked requirement should be the real pending Linux build; prerequisite merges, AMD HDR and final merged-runtime validation remain explicit WIP blockers.
WIP: feat(vk): enable PsychoV35 upscaler compatibility by defaultto feat(vk): enable PsychoV35 upscaler compatibility by default