Vulkan (简体中文)

From ArchWiki
翻译状态:本文是 Vulkan翻译。上次翻译日期:2022-06-16。如果英文版本有所更改,则您可以帮助同步翻译。

来自 wikipedia:Vulkan (API):

Vulkan是一种低开销、跨平台的3D图形和计算API。

Khronos 了解更多信息。

安装

提示: 在混合图形技术 (NVIDIA Optimus/AMD Dynamic Switchable Graphics) 上:

要运行 Vulkan 程序,你需要安装 vulkan-icd-loader 软件包(如果想运行32位程序,还需要安装 lib32-vulkan-icd-loader)以及显卡的驱动程序。有几个软件包可以 提供 vulkan 驱动程序:

作为代替,可以手动安装其他驱动程序:

对于 Vulkan 程序开发,安装 vulkan-headers,以及可选的 vulkan-validation-layersvulkan-tools (你可以在这里找到 vulkaninfo 工具)。

验证

要查看系统上当前安装了哪些 Vulkan 实现,请使用以下命令:

$ ls /usr/share/vulkan/icd.d/

为确保 Vulkan 在你的硬件上工作, 安装 vulkan-tools 并使用 vulkaninfo 命令调出你的系统信息。如果你得到了显卡信息,就说明 Vulkan 在正常工作。

$ vulkaninfo

访问 https://linuxconfig.org/install-and-test-vulkan-on-linux 以获取更多信息。

在 AMD 驱动程序之间切换

在 AMD 系统上,一次安装多个 Vulkan 驱动程序是有效的,可能需要在它们之间切换。

通过环境变量选择

提示: 这个方法不能用于选择 AMDVLK 闭源驱动。

amdvlk 2021.Q3.4 起,一种新的切换逻辑会强制将 AMDVLK 设为默认并要求你必须选择一个

  • 设置 AMD_VULKAN_ICD=RADV 以从默认的 AMDVLK 切换,
  • 或全局设置 DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1 以重新启用下面的 ICD 加载方法。

DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1 ,可以通过设置环境变量 VK_ICD_FILENAMES 来选择首选驱动程序。例如,使用 RADV 驱动运行 Steam 是通过

$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json steam

为了避免32位游戏崩溃,可以分别分配32位变量和64位变量给环境变量。

通过 AMD Vulkan Prefixes 选择

AMD Vulkan Prefixes是用于在所有三种Vulkan实现之间切换的脚本。安装 amd-vulkan-prefixesAUR ,并在运行程序前添加前缀。可添加的前缀有 vk_radv, vk_amdvlk, 与 vk_pro 。例如,使用 AMDVLK 闭源驱动:

$ vk_pro command

软件 Vulkan: lavapipe

你还可以安装名为 lavapipe 的 Vulkan 软件光栅化器: vulkan-swrast 。目前还没有32位的 vulkan-swrast 软件包。(即便在 AUR 中)

警告: “lavapipe 不是符合要求的 Vulkan 实现,仅用于测试。”(引自驱动程序本身)
$ LIBGL_ALWAYS_SOFTWARE=1 __GLX_VENDOR_LIBRARY_NAME=mesa VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.i686.json:/usr/share/vulkan/icd.d/lvp_icd.x86_64.json vulkaninfo

Vulkan 硬件数据库

硬件数据库提供了用户报告的 GPU/驱动程序组。使用 vulkan-caps-viewer-waylandAURvulkan-caps-viewer-x11AUR 可以提供自己的信息。

疑难解答

Nvidia - vulkan is not working and can not initialize

检查是否安装了其他 vulkan 驱动程序,这可能会阻止 Nvidia 的 vulkan 驱动程序被检测到。

或者,设置 环境变量 VK_ICD_FILENAMES/usr/share/vulkan/icd.d/nvidia_icd.json

如果你有双图形系统,比如 NVIDIA Optimus ,确保你的系统使用的是安装Vulkan驱动程序的显卡。

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: optimus-manager is just one of several utilities for NVIDIA Optimus. (Discuss in Talk:Vulkan (简体中文))

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: Command in code block requires a prompt symbol. (Discuss in Talk:Vulkan (简体中文))
optimus-manager --status
Optimus Manager (Client) version 1.4

Current GPU mode : nvidia
GPU mode requested for next login : no change
GPU at startup : integrated
Temporary config path: no

No device for the display GPU found. Are the intel-mesa drivers installed?

尝试将 intel_icd 与 primus_vk_wrapper 两者都配置进 VK_ICD_FILENAMES 列表

export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/intel_icd.x86_64.json:/usr/share/vulkan/icd.d/nv_vulkan_wrapper.json

AMDGPU - ERROR_INITIALIZATION_FAILED after vulkaninfo

如果在 GCN1 或 GCN2 系列的 AMD 卡上运行 vulkaninfo 后,你会收到如下错误消息:

ERROR at /build/vulkan-tools/src/Vulkan-Tools-1.2.135/vulkaninfo/vulkaninfo.h:240:vkEnumerateInstanceExtensionProperties failed with ERROR_INITIALIZATION_FAILED

然后检查你是否已正确启用对此型号显卡的支持(AMDGPU (简体中文)#开启 Southern Islands (SI) and Sea Islands (CIK) 支持)。

可以使用 lspci -k 检查 gpu 驱动程序是否已正确加载,在运行该命令后检查内核驱动中关于 gpu 的信息,它应该是 amdgpu

$ lspci -k
...
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Curacao PRO [Radeon R7 370 / R9 270/370 OEM]
	Subsystem: Gigabyte Technology Co., Ltd Device 226c
	Kernel driver in use: amdgpu
	Kernel modules: radeon, amdgpu
...

有关此问题的一些论坛帖子: [3] [4]