protonscr

State cache causes hard crash on hybrid Intel+NVIDIA laptop when dGPU-generated cache is read by iGPU on subsequent launch (PRIME render offload)

dxvkopen
doitsujin/dxvk#5609 · opened 2026-05-02 by ACDD233 · updated 2026-05-26 · 7 comments · github
1 matching comments, n / p to jump
AACDD233 2026-05-02 github

Software information

  • Game: Overwatch 2 (Steam AppID: 2357570), via Steam + Proton
  • Settings: Default, no mods
  • Launch option: prime-run %command%
  • Note: System default Vulkan device is Intel iGPU (RPL-S); dGPU (NVIDIA RTX 4070 Laptop) is accessed via PRIME render offload using prime-run

System information

  • GPU: Intel Graphics (RPL-S) [iGPU, default] + NVIDIA GeForce RTX 4070 Laptop GPU [dGPU]
  • Driver: NVIDIA 580.142 / Mesa 25.x
  • Wine version: 11.0.0 (via Proton)
  • DXVK version: v2.7.1-569-gbcbc563af48ea11

Apitrace file(s)

Not applicable — crash occurs before any rendering takes place.

Log files

steam-2357570.log

Description

On hybrid Intel+NVIDIA laptops using PRIME render offload (prime-run), the DXVK state cache causes a hard crash on every launch after the first.

Root cause: The state cache (.dxvk.bin / .dxvk.lut) is written by the NVIDIA dGPU during the first successful session. On the next launch, DXVK reads the state cache before PRIME has fully redirected Vulkan device selection. At that point the active Vulkan device is the Intel iGPU (the system default), which reads a cache generated by a completely different GPU/driver. Instead of gracefully discarding the mismatched cache and rebuilding it, DXVK crashes the application.

Evidence:

  • Deleting .dxvk.* files before every launch restores functionality 100% of the time
  • DXVK_STATE_CACHE=0 also resolves the crash
  • chmod 555 on the cache directory (preventing writes) also resolves the crash
  • The workaround DXVK_FILTER_DEVICE_NAME="NVIDIA" may also help but was not tested

Expected behaviour: When DXVK loads a state cache and detects a GPU/driver mismatch (different vendorId, deviceId, or driver version embedded in the cache header), it should silently discard the cache and start fresh rather than crashing. This is especially critical on hybrid GPU systems where the Vulkan device enumeration order at cache-read time may not match the rendering device at cache-write time.

Confirmed workarounds:

  • DXVK_STATE_CACHE=0 — disables cache entirely
  • chmod 555 on the DXVK cache directory after first successful launch
AACDD233 2026-05-02 github
Ddoitsujin maintainer 2026-05-02 github

Expected behaviour: When DXVK loads a state cache and detects a GPU/driver mismatch (different vendorId, deviceId, or driver version embedded in the cache header), it should silently discard the cache

No, it shouldn't. Cached entries are generally not a problem because device properties that affect the cached code generation are part of the shader key, so the Intel driver should never even get to see any of the code generated for the Nvidia card. There might be a bug in that area, but then the expectation should be to find and fix that bug and not just toss the entire feature.

Either way I don't have an Intel setup so can't really do anything in the way of reproducing/debugging this. All I know is that NV<->AMD generally works fine.

AACDD233 2026-05-02 github

Thank you for the clarification. A few additional points that might be helpful:

This issue started appearing after one of the recent Overwatch updates. During that same period, Proton was also updated several times, so it's unclear whether this is a regression on the game side or the Proton/DXVK side.

I use Proton for several other games including CS2, and none of them exhibit any similar issues. The problem appears to be specific to Overwatch with this hardware configuration.

I'm happy to provide any information needed to help debug this. I can also provide more logs, if that would help narrow down where in the cache reading process the crash occurs.

AACDD233 2026-05-02 github

I saw a suspicious line in the log file:
15137.752:01c0:0264:info:vkd3d-proton:vkd3d_pipeline_library_disk_cache_initial_setup: Cannot load existing on-disk cache due to driver version mismatch.

I'm not sure if it was the direct cause of the crash, but does that mean it might be a problem with vkd3d-proton?

Ddoitsujin maintainer 2026-05-02 github

are you using d3d12?

That error is expected when switching between GPUs there.

AACDD233 2026-05-02 github

No, I'm using d3d11, in the game I specifically configured it to use DirectX 11.

LLaitinlok 2026-05-26 github

https://github.com/Digger1955/dxvk-gplasync-lowlatency/pull/83
Can you try these patches for state cache, it fixes stuttering and other issues especially when using hybrid graphics.

Launch options

Launch lines

Upstream links