不同的Vulkan装载机彼此有什么不同?

时间:2016-06-03 13:20:55

标签: vulkan

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

  • 是vulkan-1.dll(或Linux上的libvulkan.so.1)所谓的加载器?
  • 当我使用HMODULE vulkan_module = LoadLibrary( "vulkan-1.dll" );时,是否使用图形驱动程序中的加载程序(假设前一个细节为真)?

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

2 个答案:

答案 0 :(得分:0)

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

“加载器”的目的是加载“提供者”提供的内容。加载器最基本的功能是找到实现的DLL并与它们进行交互。这根据平台而有所不同。在Windows中,他们可能使用注册表设置来搜索实现DLL。在Android上,他们的内置支持可能集中了一些东西。等等。

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

答案 1 :(得分:0)

“装载机”或“官方装载机”或“Khronos装载机”或“LunarG装载机”或“VulkanRT”与AFAIK相同。它来自项目KhronosGroup/Vulkan-LoaderAndValidationLayers

Khronos,LunarG SDK和驱动程序之间的区别通常只是一个版本。 (通常LunarG SDK落后于Khronos,驱动程序落后于两者。)

然后你想知道它的内部运作是在loader documentation

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

(在Windows上)我想大多数人都使用LnG SDK中方便的dll导入库vulkan-1.lib和System32中的任何vulkan-1.dll。