在哪里可以找到 vulkan 加载器并了解 vulkan 链接过程(在 Windows 10 上使用 vulkan SDK)

Where to find vulkan loader and understanding vulkan linking process (using the vulkan SDK on Windows 10)

为了开始学习 vulkan,我想确保我了解程序如何调用并实际使用 vulkan。所以我知道开发人员首先会下载 vulkan header 文件或包含官方 Khronos vulkan header 文件的 vulkan SDK 包。我下载了 SDK,并在其中找到了 vulkan headers,我还将我的程序链接到提供的 vulkan-1.lib。我的第一个问题是 vulkan-1.lib 是 vulkan 的实际加载程序库吗?或者它是某种导入库,用于在我的 Windows 系统中搜索实际的 vulkan 加载程序 vulkan-1.dll?然后是 vulkan-1.dll 它实际上会在我的系统上找到任何 vulkan 驱动程序吗?如果是这样,我可以在何处查看 vulkan 驱动程序的标准安装?

vulkan-1.lib 只是 vulkan-1.dll 加载程序的链接库。

加载程序如何与可安装客户端驱动程序交互的规范可以在 here archive 中找到。在 Windows 上,它将在注册表项 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{Adapter GUID}[=10=]0X\VulkanDriverName 中搜索包含驱动程序路径的 JSON 文件的路径。在我的系统上,驱动程序位于 C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_{some base64 hash}/nvoglv64.dll,代表 NVida OpenGL 和 Vulkan 64 位 ICD。它同时包含 OpenGL 和 Vulkan,因为它们有很多相似之处,最大的相似之处在于它们都通过 gdi32.dll.

与内核模式显示微型端口驱动程序通信。

在驱动程序内部实际上并没有太多可看的,因为它导出的主要内容是 vk_icdGetInstanceProcAddr 函数,加载程序使用它来查询所有驱动程序函数。加载程序将建立调度表,该表将处理所有层和驱动程序的调用(直到您选择了一个物理设备,它必须查询每个驱动程序)。在驱动程序内部,它基本上实现了 Vulkan 中的每个功能,并通过 vk_icdGetInstanceProcAddr 函数公开它们。如果你想了解更多关于它在做什么,你最好阅读 Vulkan Spec archive.