protonscr

[UHD 620 / KBL] Fix for VKD3D-Proton GPU hangs (vr -4 / timeline semaphore timeout) on Intel Gen 9.5

vkd3dclosed
HansKristian-Work/vkd3d-proton#3187 · opened 2026-07-31 by Hultwl · updated 2026-07-31 · 0 comments · github
HHultwl 2026-07-31 github

Problem

Many users with Intel UHD Graphics 620 (PCI 0x5917, Kaby Lake GT2) experience persistent GPU hangs when running DirectX 12 titles through VKD3D-Proton. The hang manifests as:

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

Confirmed affected games:

  • Red Dead Redemption 1 (DX12)
  • Resident Evil 2 Remake (DX12)
  • Other DX12 games on UHD 620

Kernel logs show:

i915 0000:00:02.0: [drm] GPU HANG: ecode 9:1:85ddfffa
i915 0000:00:02.0: [drm] Resetting rcs0 for preemption time out

Root Cause

The issue is a driver-level state tracking/synchronization problem between VKD3D-Proton's command submission patterns and the i915 scheduler on Kaby Lake GT2. This does NOT occur on newer Intel hardware, DX11 titles running through DXVK, or Windows.

The Fix (Two Options Available)

Do not blindly copy the full command. Try Option A first to keep maximum performance. Only use Option B if your game still freezes.

Option A: The High-Performance Fix (Try This First)

Use this option for games like Resident Evil 2 Remake. It resolves the state-tracking bug with zero performance penalty (1:1 vanilla FPS).

  • Steam Launch Options:
    INTEL_DEBUG=reemit %command%
    
  • Heroic / Lutris / Bottles Env Variable:
    INTEL_DEBUG=reemit
    

Option B: The Full Safe-Mode Fix (Last Resort)

Use this option ONLY if Option A still Hangs (required for stubborn titles like Red Dead Redemption 1). It forces strict hardware synchronization. It stops all freezes entirely but introduces a 20% to 30% performance cost.

  • Steam Launch Options:
    INTEL_DEBUG=reemit,sync,stall %command%
    
  • Heroic / Lutris / Bottles Env Variable:
    INTEL_DEBUG=reemit,sync,stall
    

Detailed Flag Breakdown

Flag Effect
reemit Forces the Mesa driver to re-emit all GPU state on every draw call. Prevents state tracking bugs that cause GPU stalls.
sync Forces full synchronization after batchbuffer submissions. Ensures the CPU waits for GPU completion.
stall Inserts pipeline stalls where needed to guarantee operation ordering.

Important Configuration Notes

  • Leave VKD3D_CONFIG completely empty. Adding extra flags like virtual_heaps, single_queue, or no_upload_hvv on top of this fix breaks stability and worsens performance.
  • When using Option B, the performance bottleneck shifts heavily to driver overhead. Lowering your in-game resolution (e.g., from 720p to 320p) will provide almost zero FPS improvement. This is normal for this specific hardware limitation.

Confirmed Working

Tested and confirmed by multiple community members on:

  • Hardware: Intel UHD Graphics 620 (Kaby Lake-R GT2, 8086:5917)
  • Mesa: 26.1.5+
  • Kernel: 7.1.4-1-cachyos, 7.2-rc5
  • Distributions: CachyOS, Arch Linux, Ubuntu
  • VKD3D-Proton: 3.0 and 3.1.0

Related Issues

Closing Note

This is an informational workaround thread and will be closed immediately to keep the active issue tracker clean. The proper fix belongs in the i915 kernel driver or Mesa's state tracking logic for Gen 9.5 GPUs. However, this workaround makes DX12 gaming viable on UHD 620 until an upstream patch is merged.