Fix active Streamline binding and resource view cleanup #1157

Merged
wilsjo2 merged 2 commits from codex/upstream-runtime-compatibility into master 2026-09-16 22:03:26 +00:00
wilsjo2 commented 2026-09-12 19:53:16 +00:00 (Migrated from github.com)

OptiScaler can crash during Streamline startup when the NVIDIA driver initializes a replacement plugin but OptiScaler calls the bundled DLL. This resolves DLSSG, Reflex and PCL functions through the active interposer after the D3D12 device is bound, including the deferred second-device path.

Two resource fixes are included: preserve R32_FLOAT_X8X24_TYPELESS when it is already a depth-plane SRV format, and check the Vulkan framebuffer handle before destroying it. The depth-format bug was diagnosed in Jedi Survivor while testing a separate NR integration: it produced an invalid D3D12 SRV and removed the device. The Vulkan guard incorporates y4my4my4m's earlier work (7b7220bb / 7c3b65dc).

There is also a separate one-line commit removing an extra ) in master 5ee53e38, which otherwise prevents the Release build.

Validation:

  • Release x64 solution build passed: 26 warnings, zero errors.
  • Installed-runtime regression on RTX 5090 / driver 616.64 resolved all required active DLSSG/Reflex/PCL functions and successfully called Reflex. Calling the old bundled Reflex export reproduced 0xc0000005.
  • The depth-format fix was retested in Jedi Survivor in the combined NR build without the earlier device removal, including reduced-resolution finished-picture processing and a one-to-two-pass transition.

The standalone regression checks initialization and plugin identity, not FG presentation. The combined NR game results are supporting evidence; this small standalone branch has not received a full game/FG matrix. No NR feature, helper DLL or hardware unlock is added by this PR.

OptiScaler can crash during Streamline startup when the NVIDIA driver initializes a replacement plugin but OptiScaler calls the bundled DLL. This resolves DLSSG, Reflex and PCL functions through the active interposer after the D3D12 device is bound, including the deferred second-device path. Two resource fixes are included: preserve `R32_FLOAT_X8X24_TYPELESS` when it is already a depth-plane SRV format, and check the Vulkan framebuffer handle before destroying it. The depth-format bug was diagnosed in Jedi Survivor while testing a separate NR integration: it produced an invalid D3D12 SRV and removed the device. The Vulkan guard incorporates y4my4my4m's earlier work (`7b7220bb` / `7c3b65dc`). There is also a separate one-line commit removing an extra `)` in master `5ee53e38`, which otherwise prevents the Release build. Validation: - Release x64 solution build passed: 26 warnings, zero errors. - Installed-runtime regression on RTX 5090 / driver 616.64 resolved all required active DLSSG/Reflex/PCL functions and successfully called Reflex. Calling the old bundled Reflex export reproduced `0xc0000005`. - The depth-format fix was retested in Jedi Survivor in the combined NR build without the earlier device removal, including reduced-resolution finished-picture processing and a one-to-two-pass transition. The standalone regression checks initialization and plugin identity, not FG presentation. The combined NR game results are supporting evidence; this small standalone branch has not received a full game/FG matrix. No NR feature, helper DLL or hardware unlock is added by this PR.
FakeMichau commented 2026-09-16 22:03:49 +00:00 (Migrated from github.com)

I've generalized the typeless format conversion so watch out when rebasing. By default it converts typeless

I've generalized the typeless format conversion so watch out when rebasing. By default it converts typeless
Sign in to join this conversation.
No description provided.