protonscr

RTX 5050 Laptop GPU (Blackwell GB107): VK_ERROR_DEVICE_LOST on compute shader dispatch — Xid 109 CTX SWITCH TIMEOUT in NVIDIA open driver

vkd3dopen
HansKristian-Work/vkd3d-proton#3099 · opened 2026-06-07 by EMalpha01 · updated 2026-06-07 · 0 comments · github
EEMalpha01 2026-06-07 github

Space Marine 2 crashes with VK_ERROR_DEVICE_LOST on compute shader dispatch on an RTX 5050 Laptop GPU (Blackwell GB107). The GPU hangs on specific compute markers, confirmed as TDR by the game engine's internal crash reporter. The NVIDIA open kernel module logs Xid 109 CTX SWITCH TIMEOUT at the kernel level under default settings. All tested VKD3D_CONFIG options have no effect.
Filed at NVIDIA/open-gpu-kernel-modules#1185. Requesting assessment of whether a VKD3D-Proton-level workaround is possible — such as a change to compute queue submission, synchronization strategy, or a Blackwell-specific config flag — to avoid triggering the GSP context switch timeout.

Software information

  • Game: Warhammer 40,000: Space Marine 2 (Steam AppID 2183900), version Retail_13.1.PATCH.1124079
  • Steam launch options: PROTON_LOG=1 VKD3D_CONFIG=no_upload_hvv SDL_VIDEODRIVER=x11 %command%
  • Rendering API: DirectX 12. Also reproduced in DX11 via DXVK (PROTON_USE_D3D11=1) — crash occurs on a different GPU channel but same failure mode, confirming the fault is below the translation layer.

System information

  • GPU: NVIDIA GeForce RTX 5050 Laptop GPU (Blackwell GB107, PCI ID: 10de:2d98)
  • Driver: NVIDIA open kernel module 595.71.05
  • Wine version: 11.0
  • VKD3D-Proton version: bundled with Proton Experimental experimental-11.0-20260529

Crash evidence

Kernel-level (default NVreg_DynamicPowerManagement):
NVRM: Xid (PCI:0000:01:00): 109, pid=17365, name=Warhammer 40000, channel 0x00000011, errorString CTX SWITCH TIMEOUT, Info 0x16c012
VKD3D-Proton log sequence:
err:winevulkan:signaller_worker wait timed out with non-empty poll list.
err:vkd3d-proton:d3d12_command_queue_execute: Failed to submit queue(s), vr -4.
warn:vkd3d-proton:d3d12_device_mark_as_removed: Device is lost (reason 0x887a0005, "VK_ERROR_DEVICE_LOST").
err:vkd3d-proton:vkd3d_wait_for_gpu_timeline_semaphore: Failed to wait for Vulkan timeline semaphore, vr -4.
The winevulkan signaller_worker times out on GPU semaphore completion before the queue submission failure, indicating the GPU stops responding to semaphore signals prior to the fatal vkQueueSubmit.
Game engine crash markers (from Saber Interactive internal crash reporter):

  • GPU crash: reason: TDR, marker: PURGE_GPU_PARTICLES_EMISSION_BEGIN (DX12)
  • GPU crash: reason: TDR, marker: COMPUTE_INST_INDEX_BEGIN (DX12, repeated across sessions)
    In all cases the GPU graphics queue accepts the compute dispatch and never signals completion on either BOP or TOP.
    VKD3D_CONFIG options confirmed applied but ineffective:
  • no_upload_hvv (confirmed active in log: VKD3D_CONFIG='no_upload_hvv')
  • no_upload_hvv,force_host_cached combined with VKD3D_FEATURE_LEVEL=12_1

Log files

sm2-vkd3d.log