fix(vk): support PsychoV35 in the TAAU replacement #528
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!528
Loading…
Reference in a new issue
No description provided.
Delete branch "futondestroyer/Longshot:codex/psychov35-taau"
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
Where the gameplay TAAU replacement is active, Native HDR with PsychoV35 can leave the scene black while the HUD remains visible. The replacement only accepts packed output even though PsychoV35 uses RGBA16F buffers.
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, game upscaler at 75%, FG Off. Force the replacement on NVIDIA with RX_VK_TAAU_KEYS=fd029a317a9a4b94; compatibility flag 0.
Steps: At the daylight ranch alley, use a configuration where the TAAU replacement is active; switch Vanilla/PsychoV35 and 75/100/75.
Expected: A visible scene with matching typed output and reset history.
Actual: The scene is black while the HUD remains visible.
What changed
Give the spatial/FXAA replacement a matching PsychoV35 output and history format. This restores the scene while retaining the existing replacement algorithm.
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 fixed runs restore the scene: exact-black scene ROI falls from 100% to 0% in both A/B pairs; tone/size switches pass.
Main at original submission:
543846eb(2026-11-14)Branch at original submission: codex/psychov35-taau @
e1da8a66(measured code; results-only commit on top)Baseline: development base @
514591a3+ PR400, original TAAU replacementBoth renderers use the unchanged agreed development base/host, the common merged PR400 matcher fix and identical private diagnostics. The fixed pack adds this TAAU change; its older Vulkan module-creation guard is retained in both arms. The new rejected-network function is identical to this PR; the production-function CPU tests and separate current-source renderer build validate the PR itself. These are isolated renderer-pack measurements, not fresh full current-main game builds. Bases and game artifacts stay local.
Hardware: RTX 4070 12 GB, NVIDIA 621.01, i7-13700F, 32 GB RAM, Windows kernel 26300 / 26H2.
Scene: Lon Lon Ranch daylight alley, same fresh copied checkpoint and camera. Output 2560x1440, client 2560x1421, Native HDR 200/1000 nits, game's upscaler, 75%, FG Off, cap 61, sharpness 0, compatibility flag 0. Explicit
RX_VK_TAAU_KEYS=fd029a317a9a4b94exercises the replacement on this NVIDIA GPU; it does not represent the default native-network NVIDIA path.Method: original/fixed/original/fixed. Five settled ten-second phases per process: PsychoV35 75%, Vanilla 75%, PsychoV35 75%, PsychoV35 100%, PsychoV35 75%. Actual options, stable play and native PQ output were recorded. Exact-black fraction is measured over x200:1000/y150:600 of the first 1280x720 capture, excluding HUD/minimap. World time and animation were not frozen. No FPS result is claimed.
514591a3, PR400 and original taaue1da8a66, development base514591a3and PR400How to reproduce: Native HDR, PsychoV35, game upscaler at 75%, with the replacement active. On NVIDIA, use the existing key override above. Compare the black scene/remaining HUD on the original with a visible scene and RGBA16F helper diagnostic here; switch Vanilla/PsychoV35 and 75/100/75. The new production-dispatch fixture fails unchanged main at the format-switch/history assertion and passes this branch.
Flags and settings
None. None added. No default changes. The existing
RX_VK_TAAU_KEYS=fd029a317a9a4b94override forces this replacement on NVIDIA for validation; software-matrix paths already use it. This is not restored temporal AA. The DLSS/FSR 4 opt-in, Upscaler Off fix and FSR 3.1 work remain separate.Testing
Readiness validation on main7494ce4e: clean main: 533 passed, 7 failed, 34 skipped in 119 s (windows, 24 at once). This PR: 535 passed, 7 failed, 34 skipped in 122 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 (57.3 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
python -I -B tests/run_all.py: 535 passed / 4 failed / 34 skipped here, 533 passed / the same 4 failed / 34 skipped on clean main543846eb. Shared failures:test_oot_state_tap,test_release,test_tested_configurations,test_walk_key. No PR-only failure. The focused shader/stand-in/fallback checks pass. The new Vulkan-spy fixture executes the actual typed dispatch: separate pipelines, packed/RGBA transitions with history reset, independent spatial history, unsupported modes, and deferred image retirement. The real stand-in fixture checks both matching views and its existing rejected-path lookup behavior. Rejected-network cases cover mixed formats, overrides, mips, swizzles, missing views/storage and pipeline failure without an incorrect blit.Both shader headers were generated with glslang 16.6.0 and name the source SHA-256. The packed shader's binary words are unchanged. The SPIR-V fixture follows binding 1 and 2 through variable/pointer/image types to verify both output and history formats. The renderer pack compiles/links with zero failures. The separate actual current-source renderer compiled and linked in 58 seconds with zero failures. Four game runs above completed with no device-lost, validation-error or pipeline-failure line. New run files validate through the catalogue CLI. The disposable runtime was restored; shared bases and normal installation remain untouched.
Not tested: AMD/Intel hardware, Linux build/runtime, normal native-network NVIDIA gameplay without the override, longer play, other scenes, active frame generation or calibrated HDR brightness. No genuine temporal-AA restoration, performance improvement, Off support or FSR 3.1 support 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
The two approved current-run 75% comparisons show the same saved viewpoint; raw PQ captures support relative inspection, not calibrated brightness. Animation and world time are not frozen.
Development base
514591a3+ PR400, original forced TAAU replacementDevelopment base
514591a3+ PR400 + TAAU fixe1da8a66Risks
What could break: A shader/view mismatch could lose output or change colour. Both storage bindings, views and history use one selected format; unsupported/mixed pairs and unrelated dispatches stay rejected. Format transitions reset the optional history bound, and retired images remain alive for in-flight work. Select Vanilla or revert this commit.
RX_VK_TAAU_KEYS=-also disables the replacement where the real network is supported; it is not a workaround for GPUs that cannot run it.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. The TAAU helper shaders change and are compiled into the renderer; the game shader cache format is unchanged.
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.This preserves the existing spatial/FXAA replacement and its single colour decode. It does not make the replacement temporal AA. Start with the format-keyed pipeline/history in
typed_upscale, then both descriptor-view entry paths. No public renderer API or third-party source changes. The Off PR edits nearby documentation; if either lands first, rebase and retain both support notes.Current readiness refresh rebases onto main7494ce4e; current branch head
10dcd837. 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 scene matcher: #400.
Separate upscaling-Off fix: #527.
No fix claim for the broader transition investigation: #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.Completed two interleaved original/fixed game pairs, current-source Windows renderer build and full-suite main comparison; added the approved before/after attachments and measured run records. Linux build/fixtures T-FJH5 and AMD Native HDR gameplay T-BHEU are open: could a maintainer add testing wanted? This remains WIP for Linux build coverage. The local RTX 4070 test explicitly forces the existing replacement; no default NVIDIA/native-network coverage or genuine temporal-AA restoration is claimed. Off remains the separate PR #527 ; FSR 3.1 is next and separate. No merge requested from automation.
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_taau, taau_typed_dispatch, taau_fxaa and upscale_fallback game-free fixtures. Expect matching storage formats, pipeline/history switches and rejection cases 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.
8f9c63188910dcd83727@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 in the TAAU replacementto fix(vk): support PsychoV35 in the TAAU replacementClosing: 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