加载器

加载器负责将应用程序映射到 Vulkan 层和 Vulkan 可安装客户端驱动程序 (ICD)。

loader_overview.png

任何人都可以创建自己的 Vulkan 加载器,只要他们遵循 加载器接口。可以构建 参考加载器,也可以从 Vulkan SDK 获取选定平台的构建版本。

链接到加载器

Vulkan 头文件仅提供 Vulkan 函数原型。在构建 Vulkan 应用程序时,必须将其链接到加载器,否则会出现未定义 Vulkan 函数引用的错误。链接加载器有两种方式:直接链接间接链接,这不应与“静态和动态链接”混淆。

  • 直接链接在编译时

    • 这需要有一个构建的 Vulkan 加载器(作为静态或动态库),你的构建系统可以找到它。

    • 构建系统(Visual Studio、CMake 等)有关于如何链接到库的文档。尝试在线搜索“(插入构建系统) 链接到外部库”。

  • 间接链接在运行时

    • 使用动态符号查找(通过诸如 dlsymdlopen 之类的系统调用),应用程序可以初始化自己的分发表。这允许应用程序在找不到加载器时优雅地失败。它还为应用程序调用 Vulkan 函数提供了最快的方式。

    • Volk 是一个开源的元加载器实现,旨在简化此过程。

平台变体

每个平台都可以设置自己的规则来强制执行 Vulkan 加载器。

Android

支持 Vulkan 的 Android 设备提供一个已经内置在操作系统中的 Vulkan 加载器

Android NDK 中提供了一个 vulkan_wrapper.c/h 文件用于间接链接。这在某种程度上是必需的,因为 Vulkan 加载器在不同的供应商和 OEM 设备上可能有所不同。

Linux

Vulkan SDK 为 Linux 提供了一个预构建的加载器。

Vulkan SDK 中的“入门”页面解释了如何在 Linux 上找到加载器。

MacOS

Vulkan SDK 为 MacOS 提供了一个预构建的加载器

Vulkan SDK 中的“入门”页面解释了如何在 MacOS 上找到加载器。

Windows

Vulkan SDK 为 Windows 提供了一个预构建的加载器。

Vulkan SDK 中的“入门”页面解释了如何在 Windows 上找到加载器。