fix(vk): opt-in PsychoV35 HDR with FSR 3.1 upscaling #536

Closed
futondestroyer wants to merge 3 commits from futondestroyer/Longshot:codex/psychov35-fsr3 into main
Member

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.

  • Extend the shared chain's existing opt-in scene/colour policy to FSR 3.1. Keep mixed-format rejection, matching sampled/storage views and existing history resets.
  • Register a PsychoV35-only HDR callback in the FSR 3.1 engine. The vendored passes are already compiled with HDR colour input enabled. Use the existing HDR preparation to decode the network's perceptual input and the typed RGBA16F output to write linear colour without a second square. Vanilla retains its existing path.
  • Name FSR 3.1 correctly in PsychoV35 diagnostics. Add an executable regression using the actual engine registration, callback and format gates; extend the existing exhaustive policy/history checks and document the scope.

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 control 543846eb)
Branch at original submission: codex/psychov35-fsr3 @ d7a2acdd (code e7efc7c8, validation records and explanatory comment on top)
Baseline: development base @ 514591a3 + PR400, original FSR 3.1

Both 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 543846eb to 1be60eae adds 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.

Actual FSR 3.1 evaluations in last 600-frame interval Before: development base @ 514591a3, PR400 and original fsr3 After: this PR @ e7efc7c8, development base 514591a3 and PR400
PsychoV35 67% 0, 0; median 0 600, 600; median 600
PsychoV35 83% 0, 0; median 0 600, 600; median 600
PsychoV35 100% 0, 0; median 0 600, 600; median 600
Vanilla 67% control 600, 600; median 600 600, 600; median 600
PsychoV35 return to 67% 0, 0; median 0 600, 600; median 600
Normal process exits 2 of 2 2 of 2

Original 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.

vk: AMD FSR 3.1: the game's upscale runs (no scene camera this frame)
vk: PsychoV35 FSR 3.1: RGBA16F linear route; scene format 122, network input 97, output 97
vk: fsr3 on the chain: 1200 frames drawn, 1707x960 -> 2560x1440, jitter +0.188 -0.130 px of 18 phases, depth reversed for FSR by the chain

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 and PsychoV35 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.

Flag What it is Before this PR After this PR Effect Helps / doesn't help / untested Recommendation
RX_VK_PSYCHOV35_DLSS Existing PsychoV35 compatibility environment flag 0/off; FSR 3.1 excluded 0/off; setting 1 also enables FSR 3.1 on the shared chain Linear HDR preparation and typed RGBA16F output Helps Native HDR PsychoV35; excludes legacy own-input route and FSR frame interpolation; AMD/Intel/Linux runtime untested Off: experimental opt-in pending wider HDR validation

Testing

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.py and test_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:

  • Linux, clang or GCC: documented renderer-only build and psychov35_fsr3, psychov35_dlss, upscaler_rows, temporal_history and hdr_encode fixtures, expecting successful compilation and all relevant regressions passing (by hand: T-UWFS; Test Farm: @Beanstalk Linux renderer build and focused fixtures).
  • AMD GPU with a Native HDR monitor, Windows or Linux: Native HDR, PsychoV35, FSR 3.1, compatibility flag RX_VK_PSYCHOV35_DLSS=1, FG Off. At the daylight ranch alley, test 67/83/100%, then Vanilla at 67% and PsychoV35 again. Expecting fsr 3.1 evaluates matching rgba16f input and output through its linear hdr path. (by hand: T-LL3V; compare logs, colours, history and errors).

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)

Original FSR 3.1 fallback

Development base @ 514591a3 + PR400 + this PR @ e7efc7c8 (active FSR 3.1)

Fixed FSR 3.1 upscaling

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=0 to 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 5d3ecc78 after the validated rebase at7494ce4e. git merge-tree reports 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_hdr and its registration in vk_fsr3.cpp, then the shared format policy. HDR-capable shader compilation already exists in scripts/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

  • One topic.
  • The title is a Conventional Commit (type(scope): description) of the status line's type.
  • Why gives the reason plainly and links the issues that fit (the tracker searched).
  • Measurements has a verdict, or one line saying why there is nothing to measure.
  • Testing names what was tested, what wasn't, and what must still be tested, where and how.
  • Rebased on current main. (Validated7494ce4e; final clean-merge check against5d3ecc78.)
  • python -I -B tests/run_all.py passes (any failure that also fails on main is named).
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

When it applies

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported.
  • Switches documented (docs/development.md; the README for a menu row) and shipped at their recommended value.
  • Screenshots of the same spot, captioned like the Measurements columns, for a change that shows on screen.
  • A file in docs/tested/ for each new measured run (format in docs/tested-configurations.md).
  • A game-free test added for the fix, failing on main and passing here.
  • A check under tests/ that reads changed source updated in this PR, not weakened.
  • Host code builds on both Windows (llvm-mingw) and Linux, with UTF-8 paths. (Rebased Windows renderer passes; Linux pending T-UWFS.)
  • Docs updated.
**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: https://git.magicbean.dev/MagicBeanDev/Longshot/issues/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. - Extend the shared chain's existing opt-in scene/colour policy to FSR 3.1. Keep mixed-format rejection, matching sampled/storage views and existing history resets. - Register a PsychoV35-only HDR callback in the FSR 3.1 engine. The vendored passes are already compiled with HDR colour input enabled. Use the existing HDR preparation to decode the network's perceptual input and the typed RGBA16F output to write linear colour without a second square. Vanilla retains its existing path. - Name FSR 3.1 correctly in PsychoV35 diagnostics. Add an executable regression using the actual engine registration, callback and format gates; extend the existing exhaustive policy/history checks and document the scope. ## 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 control 543846eb) Branch at original submission: codex/psychov35-fsr3 @ d7a2acdd (code e7efc7c8, validation records and explanatory comment on top) Baseline: development base @ 514591a3 + PR400, original FSR 3.1 Both 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 543846eb to 1be60eae adds 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. | Actual FSR 3.1 evaluations in last 600-frame interval | Before: development base @ 514591a3, PR400 and original fsr3 | After: this PR @ e7efc7c8, development base 514591a3 and PR400 | |---|---|---| | PsychoV35 67% | 0, 0; median **0** | 600, 600; median **600** | | PsychoV35 83% | 0, 0; median **0** | 600, 600; median **600** | | PsychoV35 100% | 0, 0; median **0** | 600, 600; median **600** | | Vanilla 67% control | 600, 600; median **600** | 600, 600; median **600** | | PsychoV35 return to 67% | 0, 0; median **0** | 600, 600; median **600** | | Normal process exits | 2 of 2 | 2 of 2 | Original 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. ```text vk: AMD FSR 3.1: the game's upscale runs (no scene camera this frame) vk: PsychoV35 FSR 3.1: RGBA16F linear route; scene format 122, network input 97, output 97 vk: fsr3 on the chain: 1200 frames drawn, 1707x960 -> 2560x1440, jitter +0.188 -0.130 px of 18 phases, depth reversed for FSR by the chain ``` 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 and `PsychoV35 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. | Flag | What it is | Before this PR | After this PR | Effect | Helps / doesn't help / untested | Recommendation | |---|---|---|---|---|---|---| | `RX_VK_PSYCHOV35_DLSS` | Existing PsychoV35 compatibility environment flag | 0/off; FSR 3.1 excluded | 0/off; setting 1 also enables FSR 3.1 on the shared chain | Linear HDR preparation and typed RGBA16F output | Helps Native HDR PsychoV35; excludes legacy own-input route and FSR frame interpolation; AMD/Intel/Linux runtime untested | Off: experimental opt-in pending wider HDR validation | ## Testing **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.py` and `test_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](https://git.magicbean.dev/MagicBeanDev/Longshot/actions/runs/9058/jobs/1) remains blocked by required conditions; [Test Farm approval](https://beanstalk.magicbean.dev/prs/536) 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:** - Linux, clang or GCC: documented renderer-only build and psychov35_fsr3, psychov35_dlss, upscaler_rows, temporal_history and hdr_encode fixtures, expecting successful compilation and all relevant regressions passing (by hand: T-UWFS; Test Farm: @Beanstalk Linux renderer build and focused fixtures). - AMD GPU with a Native HDR monitor, Windows or Linux: Native HDR, PsychoV35, FSR 3.1, compatibility flag RX_VK_PSYCHOV35_DLSS=1, FG Off. At the daylight ranch alley, test 67/83/100%, then Vanilla at 67% and PsychoV35 again. Expecting fsr 3.1 evaluates matching rgba16f input and output through its linear hdr path. (by hand: T-LL3V; compare logs, colours, history and errors). ## 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)** ![Original FSR 3.1 fallback](https://git.magicbean.dev/attachments/b1272dbf-5ede-481c-9cf5-0596481a0b51) **Development base @ 514591a3 + PR400 + this PR @ e7efc7c8 (active FSR 3.1)** ![Fixed FSR 3.1 upscaling](https://git.magicbean.dev/attachments/2ac63043-a8a1-444c-bdce-ee271b57649c) ## 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=0` to 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 **5d3ecc78** after the validated rebase at7494ce4e. `git merge-tree` reports 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_hdr` and its registration in `vk_fsr3.cpp`, then the shared format policy. HDR-capable shader compilation already exists in `scripts/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: https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/108 and https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/247. Other upscaling paths: https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/527 and https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/528. The common matcher fix is https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/400. The separate transition investigation remains https://git.magicbean.dev/MagicBeanDev/Longshot/issues/344. ## Checklist ### Everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`) of the status line's type. - [x] Why gives the reason plainly and links the issues that fit (the tracker searched). - [x] Measurements has a verdict, or one line saying why there is nothing to measure. - [x] Testing names what was tested, what wasn't, and what must still be tested, where and how. - [x] Rebased on current `main`. (Validated7494ce4e; final clean-merge check against5d3ecc78.) - [x] `python -I -B tests/run_all.py` passes (any failure that also fails on `main` is named). - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### When it applies - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported. - [x] Switches documented (docs/development.md; the README for a menu row) and shipped at their recommended value. - [x] Screenshots of the same spot, captioned like the Measurements columns, for a change that shows on screen. - [x] A file in `docs/tested/` for each new measured run (format in `docs/tested-configurations.md`). - [x] A game-free test added for the fix, failing on `main` and passing here. - [x] A check under `tests/` that reads changed source updated in this PR, not weakened. - [ ] Host code builds on both Windows (llvm-mingw) and Linux, with UTF-8 paths. (Rebased Windows renderer passes; Linux pending T-UWFS.) - [x] Docs updated.
Assisted-by: OpenAI Codex
docs(vk): record PsychoV35 FSR 3.1 upscaling validation
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 18s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
d7a2acddd2
Assisted-by: OpenAI Codex
Author
Member

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 514591a3 plus 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.

Original FSR 3.1 fallback

Fixed FSR 3.1: matching RGBA16F linear route and 600/600 evaluations in the settled interval.

Fixed FSR 3.1 upscaling

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 514591a3 plus 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. ![Original FSR 3.1 fallback](https://git.magicbean.dev/attachments/b1272dbf-5ede-481c-9cf5-0596481a0b51) Fixed FSR 3.1: matching RGBA16F linear route and 600/600 evaluations in the settled interval. ![Fixed FSR 3.1 upscaling](https://git.magicbean.dev/attachments/2ac63043-a8a1-444c-bdce-ee271b57649c)
Author
Member

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.

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.
Author
Member

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.

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.
Member

@futondestroyer only members of BigBeans can start the farm. One of them can approve this request by reacting 👍 to it.

@futondestroyer only members of `BigBeans` can start the farm. One of them can approve this request by reacting 👍 to it.
futondestroyer force-pushed codex/psychov35-fsr3 from d7a2acddd2
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 18s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to 3f5ddfe77c
Some checks failed
PR description / Description follows the template (pull_request_target) Failing after 10s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
beanstalk/approval not approved yet
2026-11-14 21:15:31 +00:00
Compare
Author
Member

Readiness 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.

Readiness 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.
futondestroyer changed title from WIP: fix(vk): opt-in PsychoV35 HDR with FSR 3.1 upscaling to fix(vk): opt-in PsychoV35 HDR with FSR 3.1 upscaling 2026-11-14 22:05:45 +00:00
Owner

Closing: 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!

Closing: this change is already on main through https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/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!
HumanBean closed this pull request 2026-11-15 03:37:34 +00:00
Some checks failed
PR description / Description follows the template (pull_request_target) Failing after 10s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
beanstalk/approval not approved yet

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot!536
No description provided.