Deadlock (Linux native): Vulkan backend always selects iGPU on multi-GPU systems, ignoring discrete GPU (Intel Arc)

Citizen839X

New member

System Information


  • OS: openSUSE Tumbleweed (fully updated)
  • Kernel: Linux 6.18.6-1-default
  • Desktop: GNOME 49.2 (Wayland) / Xfce 4.20 (X11) – issue occurs on both
  • CPU: AMD Ryzen 7 5700G (with integrated Radeon Vega 8)
  • Motherboard: ASUS Prime B550M-A CSM (UEFI Firmware v3607)
  • Memory: Kingston Fury DDR4 64.0 GiB @ 3200 MHz
  • Discrete GPU: Intel Arc Battlemage B580 (GDDR6)
  • Drivers: Mesa (25.3.3), Intel Vulkan ANV, AMD RADV
  • API used: Vulkan (native, no Proton)



Description of the Issue


After a recent Deadlock update, the game consistently selects the integrated GPU (AMD Radeon Vega 8) instead of the discrete GPU (Intel Arc Battlemage) on Linux systems with multiple Vulkan-capable GPUs.


This happens even though:


  • Vulkan is explicitly selected in the game settings
  • The game is launched natively on Linux (no Proton)
  • The discrete GPU is fully functional and correctly used by other Vulkan games
  • Performance monitoring (btop, LACT, MangoHud) confirms GPU usage on the iGPU only

As a result:


  • Performance is significantly reduced
  • Visual quality must be lowered
  • The discrete GPU remains idle



Expected Behavior


Deadlock should:


  • Prefer the discrete GPU over the integrated GPU on multi-GPU systems
    or
  • Expose a GPU selection option (in-game or via launch parameters)
    or
  • Respect standard Vulkan environment variables used for device selection



Actual Behavior


  • Deadlock always selects the first Vulkan device enumerated by the system (iGPU)
  • The engine ignores standard Vulkan GPU selection mechanisms

The following methods were tested and do not work:


  • VK_ICD_FILENAMES
  • VK_DEVICE_SELECT
  • DRI_PRIME=1
  • Forcing a specific Vulkan ICD via Steam launch options

Example (ignored by the game):



<span><span>VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/intel_icd.x86_64.json %</span><span><span>command</span></span><span>%<br></span></span>

This suggests that Source 2 performs its own internal Vulkan device enumeration and selection, bypassing the Vulkan loader’s standard override mechanisms.




Workaround (Not Ideal)


The only effective workaround found is to temporarily disable the Vulkan ICD for the iGPU, forcing the engine to see only the discrete GPU:




<span><span><span>sudo</span></span><span> </span><span><span>mv</span></span><span> /usr/share/vulkan/icd.d/radeon_icd.x86_64.json \<br> /usr/share/vulkan/icd.d/radeon_icd.x86_64.json.disabled<br></span></span>

This is obviously not a desirable solution for end users.




Why This Is a Bug


  • Multi-GPU Vulkan systems are common on Linux (APU + dGPU)
  • Other Vulkan titles (including non-Deadlock Source 2 titles) correctly use the discrete GPU
  • Ignoring standard Vulkan device selection mechanisms breaks expected behavior
  • There is currently no supported way for users to override GPU selection



Suggested Improvements


Any of the following would resolve the issue:


  1. Prefer discrete GPUs over integrated GPUs by default
  2. Add a GPU selection option in settings
  3. Support a launch option such as -gpu N
  4. Respect Vulkan environment variables (VK_DEVICE_SELECT, ICD filtering)



Additional Notes


  • Intel Arc Battlemage works correctly with Vulkan on Linux in other games
  • Performance, thermals, and stability are excellent when the discrete GPU is used
  • This appears to be a regression introduced by a recent update



Summary


Deadlock currently forces Vulkan rendering on the integrated GPU on Linux multi-GPU systems, with no user override. This is a regression and should be addressed to ensure correct GPU utilization and expected performance.
 
Back
Top