fix(vk): opt-in PsychoV35 HDR with FSR 3.1 upscaling #536
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!536
Loading…
Reference in a new issue
No description provided.
Delete branch "futondestroyer/Longshot:codex/psychov35-fsr3"
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: fix · Risk: medium · Tested on: Windows, RTX 4070 · Needs: Linux renderer build; AMD HDR gameplay
Why
Native HDR with PsychoV35 silently falls back from FSR 3.1 upscaling to the game's network. Accept its matching RGBA16F buffers and process their colour through the existing linear-HDR path so the selected upscaler actually runs.
Related compatibility report: #226 (the DLSS/FSR 4 report is closed; this PR extends a separate rendering path).
How to reproduce
Seen on: Windows kernel 26300 / 26H2, RTX 4070, driver621.01.
Settings and switches: Native HDR, PsychoV35, FSR 3.1, compatibility flag RX_VK_PSYCHOV35_DLSS=1, FG Off.
Steps: At the daylight ranch alley, test 67/83/100%, then Vanilla at 67% and PsychoV35 again.
Expected: FSR 3.1 evaluates matching RGBA16F input and output through its linear HDR path.
Actual: The game network runs instead because the shared chain rejects the scene.
What changed
Allow FSR 3.1 to use the shared chain's existing PsychoV35 linear HDR path under the current compatibility opt-in. Frame interpolation remains separate.
Measurements
Current review base: main @
7494ce4e. The current pushed head is named in Reviewer notes; the table retains the actual historical measured builds.Verdict: Both A/B pairs go from fallback (0 evaluations) to 600/600 per settled PsychoV35 interval at all three sizes; Vanilla remains 600/600.
Main at original submission:
1be60eae(2026-11-14; full-suite control543846eb)Branch at original submission: codex/psychov35-fsr3 @
d7a2acdd(codee7efc7c8, validation records and explanatory comment on top)Baseline: development base @
514591a3+ PR400, original FSR 3.1Both measurement arms use the agreed shared development base, unchanged host, common PR400 matcher and identical private diagnostics. The fixed renderer adds only this FSR 3.1 upscaling patch. This is a renderer-only comparison rather than a fresh full current-main game build. The rebase from
543846ebto1be60eaeadds an unrelated host CPU-affinity fix; the measured renderer logic is unchanged. No base was moved and no game artifact is attached.Hardware: RTX 4070 12 GB, NVIDIA 621.01, i7-13700F, 32 GB RAM, Windows kernel 26300 / 26H2.
Scene: Lon Lon Ranch daylight alley, fresh copied checkpoint per process, same camera. 2560x1440 output, 2560x1421 client, Native HDR 200/1000 nits, FSR 3.1, sharpness 0, FG Off, cap 61, compatibility flag 1.
Method: original/fixed/original/fixed. Five phases per process: PsychoV35 67%, 83%, 100%, Vanilla 67%, PsychoV35 67% again. Each advances at least 1250 presents; take the last complete 600-frame diagnostic interval in that phase to exclude transitions. Actual options, stable play, HDR10 surface and native PQ presentation are checked. These capped functional runs make no performance claim.
514591a3, PR400 and original fsr3e7efc7c8, development base514591a3and PR400Original status intervals omit the FSR engine when no evaluations occurred; the accompanying fallback diagnostic identifies the missing scene camera. The same process evaluates FSR normally during its Vanilla control. Fixed intervals explicitly report 600 FSR evaluations, and chain diagnostics confirm the actual input sizes, not just menu settings.
How to reproduce: choose Native HDR, PsychoV35, FSR 3.1 and FG Off, with
RX_VK_PSYCHOV35_DLSS=1. In daylight at the ranch, change render resolution 67/83/100%, then Vanilla and back. Expect repeated FSR 3.1 drawn-frame counts andPsychoV35 FSR 3.1: RGBA16F linear route, not merely a selected menu item. The new fixture fails unchanged main at the missing HDR callback assertion.Flags and settings
Extends one existing compatibility opt-in; no new switch or default change.
RX_VK_PSYCHOV35_DLSSTesting
Readiness validation on main7494ce4e: clean main: 533 passed, 7 failed, 34 skipped in 119 s (windows, 24 at once). This PR: 534 passed, 7 failed, 34 skipped in 121 s (windows, 24 at once). The same seven failures occur on both:
tests/test_cpm_discovery.py,tests/test_linux_preflight.py,tests/test_make_game_cache.py,tests/test_oot_state_tap.py,tests/test_release.py,tests/test_tested_configurations.py,tests/test_walk_key.py. No PR-only failures. The actual rebased Windows renderer, with the locally installed NGX SDK, compiles and links successfully (56.9 seconds end-to-end). The PR production files are byte-identical to the prior submitted head. All eight related PR screenshot links were checked anonymously with range GET: HTTP206 and valid PNG signatures; HEAD requests are rejected by the server and were not used as evidence of broken links. No new in-game or performance run is claimed.Tested: full game-free suite: fixed 534 passed, 4 failed, 34 skipped; clean main 533 passed, the same 4 failed, 34 skipped. Shared failures are
test_oot_state_tap.py,test_release.py,test_tested_configurations.pyandtest_walk_key.py; no fix-only failure. Focused format/history/FSR checks pass. Actual rebased Windows renderer compiles in 58 seconds with zero failures and links successfully. Six post-rebase focused checks pass, including the new fixture and upstream CPU-affinity test. All four run records pass the repository fragment check. Two original/fixed pairs complete all five phases, normal exits, no device-lost, pipeline-failure or validation-error line. Five relevant production functions and the engine registration are byte-identical between the measured pack and this PR; the only later renderer edit clarifies a comment. Native HDR route and format/resolution/tone-map switches verified on the RTX 4070. No calibrated HDR or performance claim.Not tested: AMD/Intel hardware, Linux build/runtime, long play, other scenes, active frame generation or calibrated HDR brightness. The legacy FSR 3.1 own-input route remains unsupported for PsychoV35. No performance gain or general flicker fix is claimed.
External checks: Fork CI remains blocked by required conditions; Test Farm approval awaits a maintainer. These are pending, not passing. The Linux checkbox stays unticked; do not mark ready until required external coverage is settled.
Must be tested:
Screenshots
Both at 67%, Native HDR PsychoV35, FG Off and compatibility flag 1. World animation and daylight progression were not frozen; these captures provide visual context, not a calibrated HDR brightness comparison. Actual evaluation counts above establish the fallback versus active FSR distinction.
Development base @
514591a3+ PR400, original FSR 3.1 (game-network fallback)Development base @
514591a3+ PR400 + this PR @e7efc7c8(active FSR 3.1)Risks
What could break: Incorrect colour decoding or stale temporal history could change highlights or produce ghosting. Matching format checks and existing tone-map/format/size resets remain; Vanilla's path is unchanged. Set
RX_VK_PSYCHOV35_DLSS=0to restore the current fallback, choose Vanilla, or revert this commit. No public renderer API, shader source/SPIR-V or third-party changes.Turning it off: Set RX_VK_PSYCHOV35_DLSS=0, choose Vanilla, or revert the fix.
Compatibility: No save migration, option-file schema, public renderer ABI or builder-tool requirement is introduced by this PR. No shader-cache format change is introduced by this PR.
Reviewer notes
Final upstream check: main advanced to
5d3ecc78after the validated rebase at7494ce4e.git merge-treereports a clean merge for this PR against that newer main; the full-suite/build numbers above remain tied to the validated7494ce4e base. No new measured result on5d3ecc78 is claimed. The combined-tree fixture run is prepared but deferred while another job holds the shared lock and for the17:30 Halifax autobuild priority window; standalone PR fixtures passed.Start with
chain_hdrand its registration invk_fsr3.cpp, then the shared format policy. HDR-capable shader compilation already exists inscripts/fsr3_shaders.py; floating-point storage alone does not establish linear encoding. Frame interpolation has separate input/transfer-function work and is deliberately deferred.Current readiness refresh rebases onto main7494ce4e; current branch head
3f5ddfe7. Historical game measurements retain their original measured commits. This rebase includes upstream build/profile changes, so no current-head performance claim is made. The relevant production functions are unchanged by this readiness refresh; the FSR fixture alone is made independent of the separate Off policy. Each PR merges individually against current main; shared documentation requires preserving each path when the other PRs land.Issues
Related compatibility work: #108 and #247.
Other upscaling paths: #527 and #528.
The common matcher fix is #400. The separate transition investigation remains #344.
Checklist
Everyone
type(scope): description) of the status line's type.main. (Validated7494ce4e; final clean-merge check against5d3ecc78.)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).mainand passing here.tests/that reads changed source updated in this PR, not weakened.FSR 3.1 upscaling comparison from the same daylight ranch checkpoint at 67%, Native HDR with PsychoV35, frame generation Off and compatibility opt-in enabled. Both use development base
514591a3plus the common PR400 matcher and identical private diagnostics. World animation and daylight progression were not frozen; these are visual context, not a calibrated HDR comparison.Original FSR 3.1: selected in the menu, but the log confirms fallback to the game's network.
Fixed FSR 3.1: matching RGBA16F linear route and 600/600 evaluations in the settled interval.
Added the completed two interleaved A/B pairs, 67/83/100 percent and tone-switch evaluation counts, Windows renderer build, regression results and both screenshots. Linux build T-UWFS and AMD Native HDR T-LL3V await a maintainer testing-wanted label. This remains an opt-in FSR 3.1 upscaling-only change; frame interpolation is deferred.
Readiness refresh: rebased onto main7494ce4e. The PR production files are byte-identical to the previously submitted head; historical game measurements remain tied to their measured commits. Fresh local main/branch suites and Windows builds are in progress under the shared-machine lock; no new gameplay or performance run is claimed. The FSR fixture has been made independent of the separate Off policy so the two fixes can coexist.
@Beanstalk Linux renderer-only build and the psychov35_fsr3, psychov35_dlss, upscaler_rows, temporal_history and hdr_encode fixtures. Expect the actual opt-in FSR engine HDR callback and format/history checks to pass. Build and run through the development guide; publish compiler/OS/hardware, exact tested commit, results and safe log excerpts on this PR. The existing manual test request remains open; no duplicate manual request is being created.
@futondestroyer only members of
BigBeanscan start the farm. One of them can approve this request by reacting 👍 to it.d7a2acddd23f5ddfe77cReadiness audit completed: rebased onto7494ce4e; final clean-merge check also passes against newer main5d3ecc78. Refreshed the description to the current template, preserving the actual historical game-measurement commits and screenshots. Fresh full suites have no PR-only failures against the same seven failures reproduced on clean7494ce4e. All screenshot links return valid PNG data through anonymous range GET. Current-source Windows renderer builds and links successfully. Fixed the SDK-free fixture to keep Off's independent bypass policy separate, and aligned the shared comment to avoid a needless cross-PR test conflict. The combined-tree fixture check is similarly deferred; no combined-runtime claim is made. Linux (and the listed AMD HDR checks where applicable) remain pending. Test Farm approval and fork CI jobs explicitly await maintainer authorization, so this remains WIP. Please approve the farm/fork jobs and enable the existing manual requests as appropriate. No PR was merged.
WIP: fix(vk): opt-in PsychoV35 HDR with FSR 3.1 upscalingto fix(vk): opt-in PsychoV35 HDR with FSR 3.1 upscalingClosing: this change is already on main through #608, which took it together with the other PsychoV35 changes and turned the compatibility path on by default. Rebased onto main, what is left of this branch is its earlier opt-in form (
RX_VK_PSYCHOV35_DLSS=1), which would undo 608's default, so there is nothing more to merge. Thanks!Pull request closed