欢迎光临
我们一直在努力

Using Vulkan -- Loader

Vulkan Loader(Vulkan 加载器)的核心职责是将应用程序与 Vulkan 层(Vulkan layers)及 Vulkan 可安装客户端驱动(ICD,Installable Client Drivers)建立映射关系。

任何人只要遵循《Loader Interface》(加载器接口规范),均可创建自定义的 Vulkan 加载器。也可构建参考加载器,或从 Vulkan SDK 中获取部分平台的预编译版本加载器。

Linking Against the Loader(链接至加载器)

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

Directly linking at compile time(编译时直接链接)

这种方式要求构建系统能找到已编译的 Vulkan 加载器(静态库或动态库均可)。

各类构建系统(Visual Studio、CMake 等)均有关于外部库链接的官方文档,可在网上搜索 “(构建系统名称)link to external library” 获取具体方法。

Indirectly linking at runtime(运行时间接链接)

应用程序可通过动态符号查找(借助dlsym、dlopen等系统调用)初始化自身的分发表(dispatch table)。这种方式的优势在于:若未找到加载器,应用程序可优雅地处理失败;同时,这也是应用程序调用 Vulkan 函数最高效的方式。

Volk 是一款开源的元加载器(meta-loader)实现,可简化运行时间接链接的流程。

Platform Variations(平台差异)

不同平台可自行制定 Vulkan 加载器的使用规则。

Android

支持 Vulkan 的 Android 设备,其操作系统中已内置 Vulkan 加载器。

Android NDK 提供了vulkan_wrapper.c/h文件,用于支持运行时间接链接。这一设计的部分原因是,不同厂商及原始设备制造商(OEM)的设备所搭载的 Vulkan 加载器可能存在差异。

Linux

Vulkan SDK 为 Linux 平台提供了预编译加载器。

Vulkan SDK 的《Getting Started》(快速入门)页面,详细说明了 Linux 平台下加载器的查找机制。

MacOS

Vulkan SDK 为 MacOS 平台提供了预编译加载器。

Vulkan SDK 的《Getting Started》(快速入门)页面,详细说明了 MacOS 平台下加载器的查找机制。

Windows

Vulkan SDK 为 Windows 平台提供了预编译加载器。

Vulkan SDK 的《Getting Started》(快速入门)页面,详细说明了 Windows 平台下加载器的查找机制。

 

赞(0)
未经允许不得转载:171主机测评 » Using Vulkan -- Loader
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址