Vulkan - Arch Linux 中文维基

跳转到内容

# Vulkan

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Vulkan，最近一次同步于 2024-01-11，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

来自 wikipedia:Vulkan (API):

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

在 Khronos 了解更多信息。

## 安装

提示：在混合图形技术（NVIDIA Optimus/AMD Dynamic Switchable Graphics）上:

- Vulkan 目前没有被 Bumblebee [1] 官方支持，但可以工作在 primus_vk包 或 primus-vk-gitAUR上。
- Radeon Vulkan 驱动程序现在支持 PRIME [2]。

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

- Intel: vulkan-intel包 (或 lib32-vulkan-intel包)
- NVIDIA: 有两种实现：
  - nvidia-utils包 (或 lib32-nvidia-utils包) - NVIDIA 专有
  - vulkan-nouveau包(或lib32-vulkan-nouveau包) - NVK (Mesa 项目的一部分)
    提示：启用 NVK 还需要额外的系统配置，有关详细信息，请参阅 Nouveau#使用 Mesa NVK Vulkan 驱动程序。
- AMD: 有两种实现，可以同时安装：
  - vulkan-radeon包 (或 lib32-vulkan-radeon包) - RADV （Mesa 项目的一部分）
  - vulkan-amdgpu-proAUR (或 lib32-vulkan-amdgpu-proAUR) - AMDGPU PRO（由 AMD维护）
- Lavapipe: vulkan-swrast包 (32位程序支持需安装lib32-vulkan-swrast包) 软件光栅化器，仅推荐用于没有 Vulkan 支持的设备
- SwiftShader: swiftshader-gitAUR

对于 Vulkan 程序开发，安装 vulkan-headers包，以及可选的 vulkan-validation-layers包 与 vulkan-tools包 （你可以在这里找到 vulkaninfo 工具）。

## 验证

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

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

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

    $ vulkaninfo

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

## 切换

### 在设备之间切换

在具有多个 GPU 的系统上，您可能需要强制使用特定 GPU。 vkdevicechooserAUR 提供了简单的方法来做到这一点。它将安装到系统的 Vulkan层 目录， `/usr/share/vulkan/implicit_layer.d/`.

要运行强制使用特定设备的 Vulkan 应用程序，请使用以下环境变量启动它：

    $ ENABLE_DEVICE_CHOOSER_LAYER=1 VULKAN_DEVICE_INDEX=device_index

需要用 `vulkaninfo` (没有启用图层) 所报告的设备id`GPU id`替换`device_index`

注意：一些应用程序 (例如Steam) 可能会改变设备索引`device_index`。

### 在 AMD 驱动程序之间切换

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

#### 通过 AMD Vulkan Prefixes 选择

AMD Vulkan Prefixes是用于在两种Vulkan实现之间切换的脚本。安装 amd-vulkan-prefixesCNRepo ，并在运行程序前添加前缀。可添加的前缀有 `vk_radv` 与 `vk_pro` 。例如，使用 AMDGPU PRO驱动程序:

    $ vk_pro command

## 软件渲染

您可以安装名为lavapipe 的 Vulkan 光栅化软件，例如用于调试硬件问题：vulkan-swrast包 。(或者它的32位版本lib32-vulkan-swrast包).

    $ 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-waylandAUR 或 vulkan-caps-viewer-x11AUR 可以提供自己的信息。

## 疑难解答

### NVIDIA - vulkan 无法工作并无法初始化

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

或者，设置环境变量 `VK_ICD_FILENAMES` 为 `/usr/share/vulkan/icd.d/nvidia_icd.json` 。

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

这篇文章的某些内容需要扩充。

原因：optimus-manager 只是 NVIDIA Optimus 的几个实用程序之一。 (在 Talk:Vulkan 中讨论)

本文或本章节的语言、语法或风格需要改进。参考：帮助:风格

原因：Command in code block requires a prompt symbol.（在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

### 找不到显示 GPU 的设备。是否安装了 intel-mesa 驱动程序？

尝试将 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

### 在 vulkaninfo 之后出现 AMDGPU - 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#开启 Southern Islands (SI) 和 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]

### 在抛出 'dxvk::DxvkError' 的实例后调用终止

同时拥有 AMD 和 NVIDIA 驱动程序可能会导致问题。检查

    pacman -Qs vulkan

    local/lib32-amdvlk 2022.Q2.3-1
        AMD's standalone Vulkan driver
    local/lib32-nvidia-utils 515.57-1
        NVIDIA drivers utilities (32-bit)
    local/lib32-vulkan-icd-loader 1.3.221-1
        Vulkan Installable Client Driver (ICD) Loader (32-bit)
    local/nvidia-utils 515.57-1
        NVIDIA drivers utilities
    local/vulkan-icd-loader 1.3.221-1
        Vulkan Installable Client Driver (ICD) Loader
    local/vulkan-tools 1.3.217-1 (vulkan-devel)
        Vulkan Utilities and Tools

并删除错误的驱动程序包。

### AMDGPU - Vulkan 应用程序启动过慢

如果您安装了cuda包 软件包，您可能会发现 Vulkan 应用程序（例如 Chromium）启动缓慢。这是因为 nvidia-utils包 提供了 Vulkan 驱动程序，而 Vulkan 会在 radeon 驱动程序之前尝试 nvidia 驱动程序。要解决此问题，请将环境变量 `VK_DRIVER_FILES` 设置为 `/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json`。

分类：​

- 图形
- 开发
- 使用“模板:风格”标记的页面或章节

Vulkan
添加话题