protonscr

Subnautica 2: GPU device lost (Xid 13 MMU fault) on NVIDIA; resolved by disabling VK_NV_raw_access_chains / VK_EXT_mesh_shader

vkd3dclosed
HansKristian-Work/vkd3d-proton#3142 · opened 2026-07-02 by eliw00d · updated 2026-07-03 · 5 comments · github
Eeliw00d 2026-07-02 github

Summary

Subnautica 2 (Steam appid 1962700, UE 5.6, D3D12) intermittently crashes with VK_ERROR_DEVICE_LOSTDXGI_ERROR_DEVICE_REMOVED during normal gameplay on NVIDIA. Kernel log shows an Xid 13 Graphics SM Warp Exception (MMU Fault) attributed to the game process at crash time. Setting VKD3D_DISABLE_EXTENSIONS=VK_EXT_mesh_shader,VK_NV_raw_access_chains fully resolves the crashes.

System

  • GPU: NVIDIA RTX 4090
  • Driver: 610.43.02 (nvidia-open / open kernel modules)
  • CPU: AMD Ryzen 9 9800X3D
  • OS: CachyOS (Arch-based), kernel 7.1.2-3-cachyos
  • Session: KDE Plasma 6, crash reproduces under both Wayland (winewayland) and Xwayland

Reproduces on

  • proton-cachyos 11.0-20260602 (bundled vkd3d-proton)
  • Proton Experimental experimental-11.0-20260622b

Identical failure signature on both. DLSS Frame Generation on/off makes no difference (also reproduces with Streamline DLSS-G inactive). PROTON_DLSS_UPGRADE=1 was set in all sessions (DLSS 310.7.0).

Symptoms

Crash occurs 1–20 minutes into gameplay, often shortly after entering new areas / streaming new content. Proton log at crash time:

err:vkd3d-proton:vkd3d_wait_for_gpu_timeline_semaphore: Failed to wait for Vulkan timeline semaphore, vr -4.
err:vkd3d-proton:dxgi_vk_swap_chain_wait_semaphore: Failed to wait for present semaphore, vr -4.

followed by UE5:

LogD3D12RHI: Error: GPU crash detected:
    - Device 0 Removed: DXGI_ERROR_DEVICE_REMOVED

Kernel log at the same timestamp:

NVRM: Xid (PCI:0000:01:00): 13, Graphics SM Warp Exception on (GPC 6, TPC 4, SM 0): MMU Fault
NVRM: Xid (PCI:0000:01:00): 13, Graphics Exception: ESR 0x536730=0x8000017 0x536734=0x0 0x536728=0xf812b60 0x53672c=0x1104
NVRM: Xid (PCI:0000:01:00): 13, pid=12928, name=GameThread, Graphics Exception: channel 0x00000033, Class 0000c997, Offset 00000000, Data 00000000

Possibly related shader validation failures

Every session also logs five of these early on (with matching compute PSO creation failures, hr 0x80070057):

err:vkd3d-proton:d3d12_device_validate_shader_meta: Required WaveSize range [64, 64], but supported range is [32, 32]
err:vkd3d-proton:d3d12_pipeline_state_init_compute: Failed to create Vulkan compute pipeline, hr 0x80070057.

(The game appears to ship compute shaders with a hard WaveSize(64) requirement.) Unclear whether related to the device loss — listed for completeness.

Note: vkd3d-proton already detects this title ("Detected game Subnautica2-Win64-Shipping.exe, adding 2 configs... adding shader quirks for specific shaders").

Workaround

VKD3D_DISABLE_EXTENSIONS=VK_EXT_mesh_shader,VK_NV_raw_access_chains

No crashes since applying this (previously crashing every session). Have not yet bisected which of the two extensions is responsible; can do so if useful.

Available on request

  • Full Proton logs from crashing sessions (proton-cachyos and Experimental)
  • A VKD3D_CONFIG=descriptor_qa_checks log from a crash with the workaround removed, if that would help identify the offending shader
HHansKristian-Work maintainer 2026-07-02 github

Narrowing down if it's mesh shaders or raw access chains would likely be helpful. Running with Proton Experiment debug branch and VKD3D_CONFIG=breadcrumbs and posting log might also help too.

Eeliw00d 2026-07-03 github

I was able to play with just VKD3D_DISABLE_EXTENSIONS=VK_NV_raw_access_chains and it did not crash once.

I will try running as you say and get back to you.

Eeliw00d 2026-07-03 github
HHansKristian-Work maintainer 2026-07-03 github

ok, if it's just raw access chains, it's pretty clear it's a driver bug that NV needs to resolve.

Eeliw00d 2026-07-03 github

Alrighty, thanks for taking a look! I'll post over in Nvidia.