跳转至

Vulkan运行环境

Vulkan 运行环境必须具备Vulkan Loader和 Vulkan 驱动程序(也称为"Vulkan 实现"),驱动程序负责将 Vulkan API 调用转换为 Vulkan 驱动实现,Vulkan 驱动程序由 GPU 硬件供应商发布。

检查 Vulkan 支持情况时,需要同时关注平台是否支持Vulkan,以及设备是否支持Vulkan。

支持Vulkan的平台

首先要检查系统平台是否支持 Vulkan。每个平台使用的加载程序(Vulkan Loader)机制略有差异,加载程序负责确定 Vulkan 驱动程序是否可用。

Android

运行Sascha Willems 开发的Vulkan Hardware Capability Viewer应用,来检查平台是否支持 Vulkan 以及 GPU设备提供的所有功能。

BSD Unix

获取Vulkan SDK, 使用./vulkansdk.sh命令构建 Vulkan SDK,然后运行应用vulkaninfo来检查 Vulkan 支持情况以及GPU设备提供的所有功能。

iOS

运行LunarG 提供的Vulkan Hardware Capability Viewer应用进行检查。

Linux

获取Vulkan SDK并运行vulkaninfo进行检查。

MacOS

获取Vulkan SDK并运行vulkaninfo进行检查。

Windows

获取Vulkan SDK并运行vulkaninfo.exe进行检查。

支持Vulkan的设备

除了需要系统平台支持 Vulkan,运行的GPU设备也需要支持 Vulkan,对于支持Vulkan的设备,确保安装了配套的 Vulkan 驱动程序。Vulkan 实现有 下面几种变体。

硬件设备

GPU 硬件配套的驱动程序是最常见的 Vulkan 实现。某个 GPU 设备具有运行 Vulkan 的物理功能,但如果没有配套的驱动程序是无法使用的。驱动程序以最有效的方式将 Vulkan API 调用映射到硬件上。

与其他任何软件一样,驱动程序也会更新,这意味着同一物理设备和平台可能有多种驱动程序的变体。有一个由 Sascha Willems 开发和维护的Vulkan 数据库,记录了业界常见的 Vulkan 设备和驱动列表。

Note

Vulkan 数据库并没有列举出世界上所有的GPU物理设备和平台。

空驱动程序

“空驱动程序”是指任何接受 Vulkan API 调用但不对其执行任何操作的驱动程序,这对于测试与驱动程序的交互的应用来说很常见。许多测试场景,例如创建Vulkan CTS的新特性、测试Validation Layers 都依赖于空驱动程序。

Khronos 提供Mock ICD是一种可在各平台上运行的空驱动程序。

软件模拟

可以创建仅在 CPU 上运行的 Vulkan 实现。它用于测试独立于硬件的 Vulkan 实现,但与空驱动程序不同,它也会输出有效结果。

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

检查 Vulkan 的方法

VIA(Vulkan Installation Analyzer)

VIA是Vulkan SDK中的一个应用程序,用于检查系统是否安装 Vulkan,目前支持 Windows、Linux 和 macOS。

VIA的功能包含:

  • 确定系统上 Vulkan 组件的状态
  • 检验 Vulkan Loader和驱动程序是否正确安装
  • 系统发生错误时获取系统状态

更多信息可查看Vulkan SDK VIA文档

创建HelloWorld实例

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

Vulkan SDK 提供了一个可使用的最小的vkCreateInstance示例程序:01-init_instance.cpp