fix(vk): support PsychoV35 with upscaling set to Off #527
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/tooling
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
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!527
Loading…
Reference in a new issue
No description provided.
Delete branch "futondestroyer/Longshot:codex/psychov35-off"
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
Selecting Upscaler Off with Native HDR and PsychoV35 still runs the game's upscale network, even at 100% render resolution. Off should bypass that network and preserve the selected tone mapper.
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, Upscaler Off; 100/75/67%, FG Off, compatibility flag 0.
Steps: At the daylight Lon Lon Ranch alley, select Off and change render scale, then Vanilla/PsychoV35.
Expected: Off bypasses the network and preserves the selected tone mapper.
Actual: The game network still runs, including at 100%.
What changed
Off now bypasses the game network with matching PsychoV35 buffers. The temporal engines and their opt-in remain unchanged.
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 confirm bypass at all three sizes with the fix (3/3 versus 0/3); Vanilla controls and hot switches pass.
Main at original submission:
543846eb(2026-11-14; full-suite control was9c9d69ed)Branch at original submission: codex/psychov35-off @
e101de03(code3697c5c2; originally measured as 5b9c7666, results-only commit on top)Baseline: development base @
514591a3+ PR400, original OffBoth arms use the agreed shared development base, unchanged host and warmed disposable runtime. The fixed renderer adds only this Off patch to that baseline. The four changed production functions (
temporal_scene_format,temporal_colour_pair,make_rgba_stretch,stretch) are byte-identical between the measured pack source and this PR. This is an isolated renderer comparison, not a fresh full current-main game build. 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, one fresh copied checkpoint per process, same camera. 2560x1440 output, 2560x1421 client, Native HDR 200/1000 nits, Off, sharpness 0, FG Off, cap 61,
RX_VK_PSYCHOV35_DLSS=0.Method: original/fixed/original/fixed. Each process captures five settled phases, ten seconds each: PsychoV35 at 100%, 75%, 67%; Vanilla at 100%; PsychoV35 again at 100%. Actual options, play state and screenshots are recorded. The HDR10 surface and game's native PQ picture are confirmed in every log. Metrics below count the three distinct PsychoV35 sizes with an actual RGBA16F Off-bypass diagnostic, not menu selections, frame rates or sustained per-frame evaluation counts.
514591a3, PR400 and original off514591a3and PR400How to reproduce: choose Native HDR, PsychoV35, Off, FG Off, 100% render resolution; start without the compatibility flag, then try 75%/67% and switch Vanilla/PsychoV35. Expect the Off diagnostic at each size and matching RGBA16F output under PsychoV35. At equal input/output dimensions the existing shader uses
texelFetch; at lower input sizes it samples linearly. No temporal AA is added. The new game-free dispatch fixture fails unchanged main at the native Off assertion and passes the fix.Flags and settings
None. None added. Selecting Off with Native HDR and PsychoV35 now works without
RX_VK_PSYCHOV35_DLSS=1; the DLSS/DLAA and FSR 4 compatibility default remains off. No default menu selection changes. No TAAU, FSR 3.1 or frame-generation support is added.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 120 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 (58.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: six focused checks pass. Complete
python -I -B tests/run_all.py: 533 passed / 4 failed / 34 skipped on this PR versus 532 passed / the same 4 failed / 34 skipped on clean main9c9d69ed. Shared failures:test_oot_state_tap,test_release,test_tested_configurations,test_walk_key. No fix-only failure. The dispatch fixture compiles and executes the actual functions with fake Vulkan, checking native/scaled/mip outputs, matched pipeline/layout, default decoding specialization, camera age/dimensions, mixed formats, rejected modes and pipeline-failure recovery. Existing exhaustive format-policy coverage remains.The renderer-only measurement pack builds and links with llvm-mingw and NGX, zero compiler failures. A separate renderer-only build of the actual PR source compiled and linked with zero failures (55 seconds). After rebasing onto
543846eb, the eight focused renderer and newly merged build-tool checks pass; git range-diff confirms both PR commits unchanged. The new main commits change the giant-function build and launcher SDK flag, not the measured renderer functions. Full-suite figures above remain the explicitly named pre-rebase runs, not fresh543846ebsuite results. All four game runs passed the option/state/HDR/route checks; no device-lost, output-shader-failure or validation-error line was logged. Screenshots inspected for coverage and obvious colour errors; they are not calibrated HDR measurements. New run fragments validate withscripts/tested_configurations.py. The disposable runtime's original module, manifest, settings and environment file were restored; shared bases and benchmark evidence were untouched.Not tested: Linux build/runtime, AMD/Intel GPUs, long gameplay, other scenes, motion/area transfers, active frame generation or calibrated HDR brightness. No performance gain is claimed. The existing main-table CRLF unit failure is unchanged. This PR does not fix the broader transition symptom in issue344.
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
The two approved captures show the same saved viewpoint at 100% with Native HDR and PsychoV35. Animation and world time are not frozen. Raw PQ captures are for relative image inspection, not calibrated HDR brightness.
Development base
514591a3+ PR400, original Off (game network still runs)Development base
514591a3+ PR400 + Off fix 5b9c7666 (network bypass verified)Risks
What could break: Incorrect decoding or a shader/view format mismatch could change colours or lose output. Off uses a distinct, lazily created pipeline retaining the default decode; DLSS/FSR 4's already-linear pipeline is unchanged. Matching format checks and the camera/size guards remain. Choose Vanilla or the game's upscaler to leave this path, or revert the commit. No public renderer API, shader source/SPIR-V or third-party file changes.
Turning it off: Choose Vanilla or revert this isolated 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.Review the default square in
make_rgba_stretchseparately from the no-square specialization inmake_rgba_output. The shared scene policy also supplies the correct sampled/storage views through both translated and rejected-network dispatch paths. Existingupscaler_rows::takes_psychov35remains the set of HDR temporal engines; Off is handled separately.Current readiness refresh rebases onto main7494ce4e; current branch head
3007c3d3. 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; no production changes were added in this readiness refresh. 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.
The common matcher fix used in both measurement arms 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.Posted the isolated upscaling-Off fix with two interleaved game comparisons at 100%, 75% and 67%, unchanged Vanilla controls, full-suite baseline comparison and the two approved before/after attachments. The actual current-source Windows renderer builds and links; post-rebase rebuild also passes. Linux renderer/check coverage T-27BJ and AMD Native HDR gameplay T-X7BT are open: could a maintainer add testing wanted so testers can claim them? The Linux checklist remains unticked and this PR remains WIP. TAAU, FSR 3.1 and any default-on rollout are separate work. No merge requested from automation.
Corrected the Baseline line to name its exact measurement-table column. The remaining ready-check item is the explicitly pending Linux build result T-27BJ; no code or measurement changed.
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.
@Beanstalk Linux renderer-only build and the psychov35_off, psychov35_dlss and upscaler_rows game-free fixtures. Expect successful compilation and native/scaled matching RGBA16F Off dispatch, with camera/format/failure guards passing. 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.
e101de03213007c3d365@futondestroyer only members of
BigBeanscan start the farm. One of them can approve this request by reacting 👍 to it.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. 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): support PsychoV35 with upscaling set to Offto fix(vk): support PsychoV35 with upscaling set to OffClosing: 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