Skip to content

fix(vk): support PsychoV35 HDR with DLSS and DLAA - #2707

Draft
nooblikejagger wants to merge 1 commit into
NotRexed:mainfrom
nooblikejagger:fix/psychov35-dlss-rgba16f
Draft

nooblikejagger wants to merge 1 commit into
NotRexed:mainfrom
nooblikejagger:fix/psychov35-dlss-rgba16f

Conversation

@nooblikejagger

Copy link
Copy Markdown

Native HDR with PsychoV35 changes the gameplay upscale network's input and output to RGBA16F. The current packed-format gates leave DLSS out, so switching from Vanilla can make hair and clothing visibly jagged. This adds an opt-in DLSS/DLAA path for the RGBA16F pair and preserves the network's existing perceptual-to-linear conversion to avoid a washed-out picture.

Change

  • RX_VK_PSYCHOV35_DLSS=1 accepts RGBA16F only with Native HDR, PsychoV35 and DLSS/DLAA. It is off by default. Packed B10G11R11 remains accepted; mixed format pairs and unrelated formats are rejected.
  • Camera collection, skinned actor motion and the optional reactive-mask copy share the scene-format policy. Both translated networks and rejected-network stand-ins bind the appropriate RGBA16F views.
  • Add a typed RGBA16F output shader compiled from the existing dlss_out.comp. Create that pipeline only when the opt-in path draws. The existing packed shader header is unchanged and recompiles byte-for-byte identically with glslang 16.6.0.
  • Keep the HDR prep's square-root-to-linear decode even when storage is RGBA16F; write DLSS's linear output without another square. Changing the tone mapper or input format resets temporal history.
  • Require the native-HDR DLSS feature before evaluating this path. Existing camera, depth, size, generation and frame-age checks remain.

FSR and TAAU support are outside this PR. No renderer API change, game-code patch, shader-translator stamp change, debug dump, or program-cache invalidation is included.

Local validation

Windows, RTX 4070 SUPER 12 GB, Vulkan driver word 0x9a100000, 3840×2160 output, DLSS Quality (2560×1440 input), preset K, Native HDR + PsychoV35, sharpness 0. The reporter confirmed that the final local version removes the jagged edges and the washed-out image. This was checked on the reporter's own HDR display; no controlled FPS benchmark was performed.

The cold-start comparison showed the RGBA16F network being dispatched while PsychoV35 was selected; DLSS feature creation started only after switching to Vanilla. With the fix, logs show the HDR DLSS feature and RGBA16F input/output, followed by repeated complete 600-frame DLSS reporting intervals. Hot-switching alone was misleading because a transitional frame could retain the old packed format.

The local runtime build started from c356bef4; this submission is rebased onto 4678050, and diagnostics plus unrelated local changes have been excluded. The three modified renderer translation units also compile with the latest tree's production build flags.

Checks

  • New test compiles the production format policy and exercises 3,670,016 input/output, mode, HDR and opt-in combinations; it also checks history transitions and the generated shader's RGBA16F storage-image type.
  • Final targeted checks: test_psychov35_dlss, test_temporal_history, test_reactive_mask, test_hdr_encode all pass.
  • The generated output header comes from Khronos glslang 16.6.0; regeneration is documented in docs/temporal-history.md.
  • Full Windows suite on the same 4678050 base: clean upstream 455 passed, 3 failed, 34 skipped; patched tree 456 passed, 3 failed, 34 skipped. The same failures occur in test_bug_report, test_child_unicode and test_input_background with this local Windows harness. No additional failures were introduced. Final targeted checks were repeated after making the new pipeline lazy and aligning the HDR test.

Related: #2481, #2243. See also #2502; this does not claim to resolve the entire HDR tracking issue.

This is submitted as a draft because before/after screenshots are not attached yet and Linux/runtime validation on other GPUs is still welcome. Only authored source, its shader header, tests and documentation are included; no game files, SDK, saves, caches or private configuration are submitted.

Prepared with OpenAI Codex assistance; tested and submitted by the reporter.

Accept the opt-in RGBA16F gameplay network input/output pair, bind matching
views and write DLSS's linear result through a typed output shader. Keep the
existing HDR input decode so changing storage precision does not wash out
the picture. Reset history when the tone mapper or input format changes.

Document the opt-in, add format/history/shader tests and align the existing
HDR and reactive-mask checks. Keep the default packed route unchanged.

Assisted-by: OpenAI Codex
Co-authored-by: Codex <noreply@openai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant