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:
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.
dorisyan, I think it will be easy to fix AMD's Vulkan Driver, just need to sort GPU list from best to worst
I'm not sure whether the best to worst sorting is ideal here. For example, in my situation, returning list [Radeon VII, Vega 64] (as driver does for now) would be correct ordering with respect to performance of these GPUs. However, when I run DOOM 2016 I get:
While Radeon VII is faster than Vega 64 I lost 45 FPS (+ there is some stuttering) because my displays are connected to Vega 64 and not Radeon VII. When I open Radeon software, my GPU 1 is Vega 64 (also marked primary) and GPU 2 is Radeon VII.
I think it would be good to honor notion of "primary GPU" used by D3D and OpenGL by returning that one as the first and order the rest of the list by relative performance of GPUs. Or at least provide some way to change the order of Vulkan devices.
I understand this gets more complicated when integrated GPUs are involved, but I pressume in that case Vulkan driver honors High/Low performance GPU settings advertised by Windows 10 (in System -> Display -> Graphics settings).
Thanks for your report,
I will ask a QA for help to find this regression.
Just short update on this issue as another (DOOM Ethernal) Vulkan title was released. The issue is still present with latest driver (20.3.1) and it causes the game to crash when set to Fullscreen mode (disabling Radeon VII allows the game to launch). The game once again runs on secondary GPU (Radeon VII) when set to "Borderless windowed" mode and the GPU is enabled (just as with DOOM 2016).