AnsweredAssumed Answered

vkEnumeratePhysicalDevices no longer returns primary GPU as the first physical device

Question asked by Deluxe on Jan 27, 2020
Latest reply on Jan 29, 2020 by Deluxe

After recent driver update I noticed change in behavior of vkEnumeratePhysicalDevices, which no longer returns primary GPU as first in the list. This change seems to manifest since one of 20.1.X driver updates. This has significant effect on many Vulkan applications such as AAA games (DOOM 2016 or Wolfenstein 2) which have no way of specifying GPU which should be used for rendering. These games still work, however render on secondary GPU which might not have displays connected and image is transfered to primary GPU, which results in fluidity and performance loss.

 

Machine:

  • MB: ASUS Crosshair VIII Hero (X570)
  • GPUs: Radeon RX Vega 64 Liquid (marked as primary in Radeon Software and used for OpenGL/D3D apps) + Radeon VII (no displays connected + returned as 0th GPU by vkEnumeratePhysicalDevices)
  • CPU: Ryzen R9 3950X
  • Radeon Software: 20.1.3 (with Vulkan API 1.2.131)
  • OS: Windows 10 (1909 build 18363.592)

 

This seems to be reggresion as I observed this behavior before, but was resolved. I'm attaching "vulkaninfo" output, which lists GPUs as:

        GPU id     : 0 (AMD Radeon VII)
        Layer-Device Extensions: count = 0

 

        GPU id     : 1 (Radeon RX Vega)
        Layer-Device Extensions: count = 0

 

While Vulkan spec does not seem to specify any particular ordering of physical devices returned by vkEnumeratePhysicalDevices I believe its desirable to return "primary" GPU device as first in the list because many applications seem to rely on this.

Attachments

Outcomes