protonscr

Games crash when ReShade Addon and DLSS are enabled simultaneously

vkd3dclosed
HansKristian-Work/vkd3d-proton#2785 · opened 2026-01-08 by fornkatt · updated 2026-04-09 · 10 comments · github
Ffornkatt 2026-01-08 github

Problem seems to only affect DX12 games. Crash occurs when both DLSS and ReShade Addon are enabled at the same time. DX11 games do not seem to be affected and running fine with both enabled including Prey using the LUMA mod to add HDR and DLSS (ships with ReShade Addon) as well as Baldur's Gate 3 in DX11 mode and also Clair Obscur: Expedition 33 in DX11 mode.

The crash seems to occur as soon as 3D rendering is done, as games that use in-game rendering in the menu crashes to desktop before getting a chance to load a save file, like Silent Hill 2 Remake.

An issue covering this topic is also open over at Proton: Issue 9367
I saw it fitting to also post an issue here since it seems related to DX12.

If any additional information is needed, I would be glad to provide it if I can get instructions on how to perform additional debugging steps.

Software information

Kingdom Come: Deliverance 2 (used for logs)
Clair Obscur: Expedition 33
Silent Hill 2 Remake
The Witcher 3: Wild Hunt

System information

  • GPU: NVIDIA RTX 4090
  • Driver: 590.48.01
  • Wine version: Proton Experimental 10.0-20251222
  • VKD3D-Proton version: As per Proton Experimental 10.0-20251222

Log files

Log files generated using Kingdom Come 2.

Log file with only ReShade Addon enabled. Game runs fine:
steam-1771300_reshade_addon_only.log

Log file with only DLSS enabled. Game runs fine:
steam-1771300_dlss_only.log

Log file with both DLSS and ReShade Addon enabled. Game crashes upon loading a save:
steam-1771300_reshade_addon_and_dlss.log

Log file with ReShade Addon enabled and DLSS turned on after save load. Game crashes when switching DLSS to on in the menu:
steam-1771300_reshade_addon_add_dlss_after_load.log

ReShade.log when crash occurs:
ReShade.log

SSaancreed 2026-01-09 github

While I can't be sure if that's the same thing as your logs point to (because of lack of debug symbols), having debugged this locally and getting almost identical stack traces leads me to believe vkd3d-proton is crashing due to a segfault caused by one of the two following pointer dereferences:

https://github.com/HansKristian-Work/vkd3d-proton/blob/ff6b54a968d1f5c4480b588fb6fcad0b282741a3/libs/vkd3d/device_vkd3d_ext.c#L206

https://github.com/HansKristian-Work/vkd3d-proton/blob/ff6b54a968d1f5c4480b588fb6fcad0b282741a3/libs/vkd3d/device_vkd3d_ext.c#L178

Interestingly, values of (uav|srv)_desc.view aren't NULL during problematic calls but pointers that look like 0x00000000e0000580 or 0x0000000110000560. Still, they are invalid and memory they point to cannot be read from, but I cannot tell if this is due to vkd3d-proton failing to meet some expectation of DLSS, a bug in vkd3d-proton, DLSS or Reshade, or something else entirely.

HHansKristian-Work maintainer 2026-01-09 github

If uav_desc.view is a garbage pointer, it's most likely the descriptor handle being passed into that function being corrupt or something.

Ccrosire 2026-01-10 github

ReShade with add-on support rewrites the descriptor handles to be able to do efficient descriptor tracking for add-ons, but of course has to convert those handles between what is exposed to the game and what is actually passed down to the D3D runtime.
DLSS is calling NvAPI_D3D12_GetCudaTextureObject/NvAPI_D3D12_GetCudaSurfaceObject with a descriptor handle from the game. With normal NVAPI this works, since under the hood it actually calls into the ReShade proxy device again and the descriptor handles thus get converted properly. But with vkd3d it broke, since it uses its own implementation that bypassed any methods ReShade had already hooked, so the unconverted descriptor handle ended up getting through, hence the invalid pointer access.

This is fixed now by https://github.com/crosire/reshade/commit/9b2815e48e55393d478fda21f1b3f31d49336298, which simply ensures calls to vkd3d's ID3D12DeviceExt::GetCudaTextureObject/ID3D12DeviceExt::GetCudaSurfaceObject get the passed in descriptor handles fixed up by ReShade as well before actually reaching vkd3d.

Ffornkatt 2026-01-10 github

I can confirm this issue is now fixed by installing 9b2815e which effectively closes this issue. Thank you crosire!

Tested a few games: The Witcher 3, Clair Obscur: Expedition 33 and Kingdom Come: Deliverance 2.

Lluz-andre 2026-03-19 github

This issue either returned or is still happening to me with ReShade 6.7.3_Addon

SSaancreed 2026-03-19 github

Yeah, I've recently added a new interface that also needs to be intercepted, but we also poked crosire about it so ReShade should be prepared for it. You likely need a version that has https://github.com/crosire/reshade/commit/50319382618a53072a9e92ca3509caa2c7051f48, and afaik there were no tagged releases since that change. Try building the latest revision of ReShade from source if you don't want to wait for a new version to be released.

Lluz-andre 2026-04-09 github

Yeah, I've recently added a new interface that also needs to be intercepted, but we also poked crosire about it so ReShade should be prepared for it. You likely need a version that has crosire/reshade@5031938, and afaik there were no tagged releases since that change. Try building the latest revision of ReShade from source if you don't want to wait for a new version to be released.

I tried with a nightly build of that commit but it still threw an error for me (on the latest CachyOS Proton)
Attached the PROTON_LOG output to see if something shows up.

This particular case was ReShade Add-on 6.7.3 with manual override of the DXGI.dll for the latest build.
Running with RenoDX HDR mod on Starfield.

steam-1716740.log

SSaancreed 2026-04-09 github

Unfortunately, I don't see any error or crash in your logs per-se, it looks like the game just terminates itself at some point for no reason. Doesn't look very debuggable, sorry :(

Lluz-andre 2026-04-09 github

Unfortunately, I don't see any error or crash in your logs per-se, it looks like the game just terminates itself at some point for no reason. Doesn't look very debuggable, sorry :(

Yes because it was unresponsive and I had to terminate it manually.
I believe this is the same symptom as the current bug because as soon as I disabled DLSS, it works and the application doesn't hang anymore. FSR3, XeSS all worked as well.

Any other log that I could obtain to provide material for this?

Also, DLSS works without ReShade.

Lluz-andre 2026-04-09 github

I tested with an even more recent build instead of the commit that theoretically fixed it (e.g https://github.com/crosire/reshade/actions/runs/24206892653) and it works now with DLSS.
Guess it can be kept closed :D

Proton versions

Launch options

Upstream links

DLLs