检查 Vulkan 支持

Vulkan 需要 Vulkan 加载器和 Vulkan 驱动程序(也称为 Vulkan 实现)。驱动程序负责将 Vulkan API 调用转换为有效的 Vulkan 实现。最常见的情况是 GPU 硬件供应商发布一个驱动程序,用于在物理 GPU 上运行 Vulkan。应该注意的是,有可能拥有一个完全基于软件的 Vulkan 实现,尽管性能影响会非常明显。

在检查 Vulkan 支持时,区分平台支持设备支持之间的差异非常重要。

平台支持

首先要检查的是您的 平台 是否支持 Vulkan。每个平台使用不同的机制来管理 Vulkan 加载器的实现方式。然后,加载器负责确定 Vulkan 驱动程序是否正确公开。

Android

获取有关 Vulkan 的信息的一个简单方法是运行由 Sascha Willems 开发的 Vulkan 硬件功能查看器应用程序。此应用程序不仅会显示是否支持 Vulkan,还会显示设备提供的所有功能。

BSD Unix

获取 Vulkan SDK。使用命令 ./vulkansdk.sh 构建 Vulkan SDK,然后运行 vulkaninfo 可执行文件,以轻松检查 Vulkan 支持以及设备提供的所有功能。

iOS

获取有关 Vulkan 的信息的一个简单方法是运行 LunarG 提供的 Vulkan 硬件功能查看器的 iOS 端口。此应用程序不仅会显示是否支持 Vulkan,还会显示设备提供的所有功能。

Linux

获取 Vulkan SDK 并运行 vulkaninfo 可执行文件,以轻松检查 Vulkan 支持以及设备提供的所有功能。

MacOS

获取 Vulkan SDK 并运行 vulkaninfo 可执行文件,以轻松检查 Vulkan 支持以及设备提供的所有功能。

Windows

获取 Vulkan SDK 并运行 vulkaninfo.exe 可执行文件,以轻松检查 Vulkan 支持以及设备提供的所有功能。

设备支持

仅仅因为平台支持 Vulkan 并不意味着有设备支持。对于设备支持,需要确保有完全实现 Vulkan 的 Vulkan 驱动程序可用。Vulkan 驱动程序有几种不同的变体。

硬件实现

针对物理 GPU 硬件的驱动程序是 Vulkan 实现中最常见的情况。重要的是要理解,虽然某些 GPU 可能具有运行 Vulkan 的物理功能,但仍然需要驱动程序来控制它。驱动程序负责以最有效的方式将 Vulkan 调用映射到硬件。

与任何软件一样,驱动程序也会更新,这意味着同一物理设备和平台可能存在许多不同的驱动程序。有一个由 Sascha Willems 开发和维护的 Vulkan 数据库,它是记录的 Vulkan 实现细节的最大集合

仅仅因为物理设备或平台不在 Vulkan 数据库中,并不意味着它不存在。

空驱动程序

“空驱动”一词指的是任何接受 Vulkan API 调用但不执行任何操作的驱动程序。这通常用于测试与驱动程序的交互,而无需任何实际的工作实现。许多用例,例如为新功能创建 CTS 测试测试验证层等,都依赖于空驱动的概念。

Khronos 提供了 Mock ICD 作为一种在各种平台上工作的空驱动的实现。

软件实现

可以创建一个仅在 CPU 上运行的 Vulkan 实现。如果需要测试与硬件无关的 Vulkan,这非常有用,但与空驱动不同,它也会输出有效的结果。

SwiftShader 是基于 CPU 实现的一个示例。

检查 Vulkan 的方法

VIA (Vulkan 安装分析器)

Vulkan SDK 中包含一个用于检查计算机上 Vulkan 安装的实用工具。它在 Windows、Linux 和 macOS 上受支持。VIA 可以

  • 确定系统上 Vulkan 组件的状态

  • 验证您的 Vulkan 加载器和驱动程序是否已正确安装

  • 捕获您的系统状态,以便在提交错误时用作附件

有关更多信息,请查看 关于 VIA 的 SDK 文档

Hello 创建实例

跨平台检查 Vulkan 支持的一种简单方法是创建一个简单的 “Hello World” Vulkan 应用程序。vkCreateInstance 函数用于创建 Vulkan 实例,也是编写有效 Vulkan 应用程序的最短方法。

Vulkan SDK 提供了一个最小的 vkCreateInstance 示例 01-init_instance.cpp,可以使用它。