如何强制 Vulkan 应用程序不使用 Nvidia 专有 GPU?

如何强制 Vulkan 应用程序不使用 Nvidia 专有 GPU?

我有一台带有两个 GPU 的笔记本电脑,一个是 AMD 集成 GPU,另一个是无头 Nvidia 芯片。根据Nvidia 文档,设置环境变量__NV_PRIME_RENDER_OFFLOAD=1将导致 Nvidia GPU 首先出现在应用程序中,__VK_LAYER_NV_optimus=NVIDIA_only将隐藏其他 GPU,强制应用程序使用 Nvidia GPU,并将__VK_LAYER_NV_optimus=non_NVIDIA_only隐藏 Nvidia GPU。前一个选项工作正常,但后一个选项仅调整顺序,而不是隐藏任何内容:

$ __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=non_NVIDIA_only vulkaninfo --summary | grep deviceName
        deviceName         = AMD Radeon Graphics (RADV RENOIR)
        deviceName         = NVIDIA GeForce RTX 3050 Ti Laptop GPU
        deviceName         = llvmpipe (LLVM 15.0.6, 256 bits)
$ __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only vulkaninfo --summary | grep deviceName
        deviceName         = NVIDIA GeForce RTX 3050 Ti Laptop GPU
        deviceName         = AMD Radeon Graphics (RADV RENOIR)
        deviceName         = llvmpipe (LLVM 15.0.6, 256 bits)

事实上,使用后一个选项集,许多应用程序仍然默认使用(更高性能)Nvidia GPU:

$ __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=non_NVIDIA_only vkcube
Selected GPU 1: NVIDIA GeForce RTX 3050 Ti Laptop GPU, type: DiscreteGpu

这是 Nvidia 驱动程序版本 515.86.01,目前在 Debian 测试中附带该版本。

如何让应用程序只看到集成 GPU

答案1

我想到了。 VK_ICD_FILENAMES 环境变量允许您指定特定的 Vulkan 驱动程序。前任。

$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json vulkaninfo --summary | grep deviceName
        deviceName         = AMD Radeon Graphics (RADV RENOIR)

相关内容