1

首先我想知道一些小细节,看看我是否正确理解了一些概念:

  • vulkan-1.dll(或Linux上的libvulkan.so.1)被称为加载程序吗?
  • 当我使用HMODULE vulkan_module = LoadLibrary( "vulkan-1.dll" );时,这是使用图形驱动程序中的加载程序(前提是前面的细节是真的)?

现在到实际的问题。加载器似乎负责将驱动程序拉到一起,使它们看起来像一个“单元”,以及收集可用的扩展和验证层。那么 LunarG 加载程序(例如)与图形驱动程序提供的加载程序有何不同?为什么一个人要使用一个而不是另一个?

4

2 回答 2

0

Vulkan 驱动程序不包含任何可以合理地称为“加载程序”的内容。他们是“提供者”。

“加载器”的目的是加载“提供者”提供的内容。加载器所做的最基本的事情是找到实现的 DLL 并与它们进行交互。这因平台而异。对于 Windows,他们可能会使用注册表设置来寻找实现 DLL。在 Android 上,它们的内置支持可能会集中一些东西。等等。

唯一常用的加载器是 LunarG 的 SDK 加载器(它确实使用文件名vulkan-1)。有些人自己写了,但 LunarG 是唯一一个被广泛使用的。

于 2016-06-03T13:44:53.343 回答
0

“加载程序”或“官方加载程序”或“Khronos 加载程序”或“LunarG 加载程序”或“VulkanRT”在 AFAIK 中是相同的。它来自KhronosGroup/Vulkan-LoaderAndValidationLayers项目。

不同之处(在 Khronos、LunarG SDK 和驱动程序提供的那些之间)通常只是一个版本。(通常 LunarG SDK 落后于 Khronos,驱动程序落后于两者。)

更多你想知道它的内部工作是在加载器文档中。

您建议的运行时动态链接应该是可能的(您将执行thenLoadLibrary()命令然后休息)。GetProcAddress()vkGetInstanceProcAddr()

(在 Windows 上)我认为大多数人使用vulkan-1.lib来自 LnG SDK 的方便的 dll 导入库以及 System32 中的任何 vulkan-1.dll。

于 2016-06-05T23:12:03.343 回答