[550.67] Nvidia Vulkan ICD wakes up dgpu on initialization and exit

The Vulkan ICD provided by Nvidia’s driver always wakes up the dgpu on hybrid graphic systems, even if the gpu chosen by the program is not the Nvidia dgpu.

When running a Vulkan program, its launch will be delayed for several seconds, while the card is resumed. Once the program launches, the card goes back to sleep after a while:

Exiting the program also requires the card to wake up, resulting in another delay:

This affects both x11 and wayland programs:

The only workaround is to disable the nvidia ICD, as seen here:

(Note that the nouveau_icd was also disabled in other tests, so it’s not relevant.)

Symptoms are very similar to those found in this egl-wayland issue, but it’s with the Vulkan implementation instead of EGL:

Here’s some additional system details:

  • Machine: Thinkpad P1 Gen 6
    • CPU: Intel Core i7-13800H
    • Graphics: Intel(R) Graphics (RPL-P), NVIDIA RTX 4000 Ada Generation Laptop GPU
  • OS: Fedora (Rawhide/41)
  • Nvidia Driver Version: 550.67 (open kernel module)
    • Note: NVreg_EnableS0ixPowerManagement is set to 1
  • Mesa Version: 24.03 (Also tested on git main, commit fcb568a5d5a52db75fa2f6d04579bb404ca7f597)
  • vulkaninfo output: vulkaninfo.txt (193.4 KB)

I’ve recorded a few videos showing the symptoms in more detail - will share if needed.