跳转至内容

Vulkan

来自 ArchWiki

来自 Wikipedia

Vulkan 是一个低开销、跨平台的 3D 图形和计算 API。它于 2016 年首次发布,是 OpenGL 的继任者。

Vulkan 官网 了解更多信息。

安装

注意 在混合显卡(NVIDIA Optimus/AMD Dynamic Switchable Graphics)上

要运行 Vulkan 应用程序,您需要 安装 vulkan-icd-loader 软件包(如果您还想运行 32 位应用程序,还需安装来自 multilib 仓库的 lib32-vulkan-icd-loader),以及适用于您显卡的 Vulkan 驱动程序。有几个软件包 提供vulkan-driverlib32-vulkan-driver

以下是软件光栅化器,以便您可以在不支持 Vulkan 的设备上使用。

对于 Vulkan 应用程序开发,请 安装 vulkan-headers,以及可选的 vulkan-validation-layers, vulkan-man-pagesAURvulkan-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-waylandAURvulkan-caps-viewer-x11AUR 来提供自己的信息。

故障排除

NVIDIA - vulkan 无法工作且无法初始化

环境变量

无效或矛盾的 环境变量 值可能会导致 Vulkan 失败,且在具有多个 GPU 的机器上,不恰当的值可能会导致使用非预期的 GPU。正确设置变量还可以帮助 在不需要时让辅助 GPU 保持关电状态

GPU 切换

如果您的机器有多个 GPU 且 Vulkan 无法看到或使用其中一个,请确保它当前未被 BIOS/UEFI 或内核禁用。有关在 GPU 之间切换的不同方法的概述,请参阅 NVIDIA Optimus

本文章或章节需要扩充。

原因: 是否有更简单的方法在不安装 AUR 软件包的情况下检查此信息?(在 Talk:Vulkan 中讨论)

使用 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
...

关于此问题的一些论坛讨论帖:[3] [4]

AMDGPU - Vulkan 应用程序启动缓慢

如果您安装了 cuda,您可能会发现 Vulkan 应用程序(例如 Chromium)启动缓慢。这是因为 nvidia-utils 提供了一个 Vulkan 驱动,Vulkan 会在尝试 radeon 驱动之前先尝试 nvidia 驱动。要解决此问题,请将 环境变量 VK_DRIVER_FILES 设置为 /usr/share/vulkan/icd.d/radeon_icd.json

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.