Vulkan
来自 Wikipedia
- Vulkan 是一个低开销、跨平台的 3D 图形和计算 API。它于 2016 年首次发布,是 OpenGL 的继任者。
在 Vulkan 官网 了解更多信息。
安装
要运行 Vulkan 应用程序,您需要 安装 vulkan-icd-loader 软件包(如果您还想运行 32 位应用程序,还需安装来自 multilib 仓库的 lib32-vulkan-icd-loader),以及适用于您显卡的 Vulkan 驱动程序。有几个软件包 提供了 vulkan-driver 和 lib32-vulkan-driver:
- AMD: vulkan-radeon (或 lib32-vulkan-radeon)
- Intel: vulkan-intel (或 lib32-vulkan-intel)
- NVIDIA: 有两种实现方式
- nvidia-utils (或 lib32-nvidia-utils) - NVIDIA 闭源驱动
- vulkan-nouveau (或 lib32-vulkan-nouveau) - NVK (Mesa 项目的一部分)注意 启用 NVK 还需要额外的系统配置,详情请参阅 Nouveau#Using the Mesa NVK Vulkan Driver。
以下是软件光栅化器,以便您可以在不支持 Vulkan 的设备上使用。
- Lavapipe: vulkan-swrast (或 lib32-vulkan-swrast)
- SwiftShader: swiftshader-gitAUR
对于 Vulkan 应用程序开发,请 安装 vulkan-headers,以及可选的 vulkan-validation-layers, vulkan-man-pagesAUR 和 vulkan-tools(您可以在其中找到 vulkaninfo 和 vkcube 工具)。
验证
要查看当前系统中安装了哪些 Vulkan 实现,请使用以下命令
$ ls /usr/share/vulkan/icd.d/
为了确保 Vulkan 在您的硬件上正常工作,请 安装 vulkan-tools 并使用 vulkaninfo 命令来获取系统的相关信息。如果您能看到显卡信息,则说明 Vulkan 工作正常。
$ vulkaninfo
切换
在设备之间切换
在具有多个 GPU 的系统中,您可能需要强制使用特定的 GPU。为此需要安装 vulkan-mesa-implicit-layers。通过将 MESA_VK_DEVICE_SELECT 设置为 vendorID:deviceID,您可以选择所需的 GPU。
要列出候选设备,请使用
$ MESA_VK_DEVICE_SELECT=list vulkaninfo
在指定值末尾添加 ! 可强制执行此行为。更多信息请参阅 Vulkan mesa device select layer environment variables。
软件渲染
您可以安装名为 lavapipe 的软件 Vulkan 光栅化器,例如用于调试硬件问题:vulkan-swrast (或 32 位版本的 lib32-vulkan-swrast)。
以下示例显示了在运行 vulkaninfo 时使用必要环境变量,以强制 Vulkan 和 OpenGL 进行全软件渲染(通过 __GLX_VENDOR_LIBRARY_NAME=mesa 确保该命令对 PRIME 用户同样有效)
$ LIBGL_ALWAYS_SOFTWARE=1 __GLX_VENDOR_LIBRARY_NAME=mesa VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json vulkaninfo
Vulkan 硬件数据库
Vulkan Hardware Database 提供了用户报告的 GPU/驱动程序组合。可以使用 vulkan-caps-viewer-waylandAUR 或 vulkan-caps-viewer-x11AUR 来提供自己的信息。
故障排除
NVIDIA - vulkan 无法工作且无法初始化
环境变量
无效或矛盾的 环境变量 值可能会导致 Vulkan 失败,且在具有多个 GPU 的机器上,不恰当的值可能会导致使用非预期的 GPU。正确设置变量还可以帮助 在不需要时让辅助 GPU 保持关电状态。
GPU 切换
如果您的机器有多个 GPU 且 Vulkan 无法看到或使用其中一个,请确保它当前未被 BIOS/UEFI 或内核禁用。有关在 GPU 之间切换的不同方法的概述,请参阅 NVIDIA Optimus。
使用 optimus-manager-gitAUR 检查当前状态的示例命令
$ 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
GSP 固件
参阅 NVIDIA/Troubleshooting#GSP firmware。
未找到显示 GPU 的设备。是否安装了 intel-mesa 驱动?
尝试在 VK_DRIVER_FILES 中同时列出 intel_icd 和 primus_vk_wrapper 配置
export VK_DRIVER_FILES=/usr/share/vulkan/icd.d/intel_icd.json:/usr/share/vulkan/icd.d/nv_vulkan_wrapper.json
AMDGPU - vulkaninfo 后出现 ERROR_INITIALIZATION_FAILED
如果在 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#Enable Southern Islands (SI) and Sea Islands (CIK) support)。
检查 GPU 驱动是否正确加载的一种方法是运行 lspci -k,然后检查 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 ...
AMDGPU - Vulkan 应用程序启动缓慢
如果您安装了 cuda,您可能会发现 Vulkan 应用程序(例如 Chromium)启动缓慢。这是因为 nvidia-utils 提供了一个 Vulkan 驱动,Vulkan 会在尝试 radeon 驱动之前先尝试 nvidia 驱动。要解决此问题,请将 环境变量 VK_DRIVER_FILES 设置为 /usr/share/vulkan/icd.d/radeon_icd.json。