我应该使用 Vulkan 加载程序吗?
Should I use the Vulkan loader?
根据子主题 "Application Interface to the Loader" 下的 vulkan sdk 文档,设置 Vulkan 界面的最佳性能方法是
但我不知道如何实际实现它,或者是否有库已经这样做了。
作为旁注,如果我选择使用加载程序库,那么所有非核心非 wsi 函数的列表在哪里?
查看 Vulkan Cookbook 中的 first part of Intel's tutorial or code samples。它们包含有关如何连接 Vulkan 库以及如何动态加载函数指针的信息。
至于扩展列表 - 您需要全部吗?启用所有已发布的实例和设备扩展可能不是一个好主意,因为它极大地限制了您的代码将在其上运行的设备 运行。您的项目只需要 select 个扩展,在实例 and/or 设备创建期间启用它们,并(如有必要)使用上面提供的链接中提供的代码加载它们的功能。
您应该使用加载程序,几乎没有理由不这样做。最简单的方法是 link 针对加载程序库,但如果您的应用程序可能需要 运行 在未安装 Vulkan 驱动程序的系统上(即使它只需要 运行足以显示一条错误消息)那么你应该动态加载加载程序库。
即使在使用加载程序时,通过调用通过 vkGetDeviceProcAddr 获取的函数,也可以获得与未使用加载程序时相同的性能。当你这样做时,你直接调用驱动程序,加载程序的开销实际上为零。
所有可用的扩展都在 vulkan.h 中。扩展命令(函数)按提供它们的扩展进行排序,因此很容易判断特定命令需要哪个扩展。你也可以看看 spec;每个扩展都列在附录中,并列出了它添加的结构和命令。
根据子主题 "Application Interface to the Loader" 下的 vulkan sdk 文档,设置 Vulkan 界面的最佳性能方法是
但我不知道如何实际实现它,或者是否有库已经这样做了。
作为旁注,如果我选择使用加载程序库,那么所有非核心非 wsi 函数的列表在哪里?
查看 Vulkan Cookbook 中的 first part of Intel's tutorial or code samples。它们包含有关如何连接 Vulkan 库以及如何动态加载函数指针的信息。
至于扩展列表 - 您需要全部吗?启用所有已发布的实例和设备扩展可能不是一个好主意,因为它极大地限制了您的代码将在其上运行的设备 运行。您的项目只需要 select 个扩展,在实例 and/or 设备创建期间启用它们,并(如有必要)使用上面提供的链接中提供的代码加载它们的功能。
您应该使用加载程序,几乎没有理由不这样做。最简单的方法是 link 针对加载程序库,但如果您的应用程序可能需要 运行 在未安装 Vulkan 驱动程序的系统上(即使它只需要 运行足以显示一条错误消息)那么你应该动态加载加载程序库。
即使在使用加载程序时,通过调用通过 vkGetDeviceProcAddr 获取的函数,也可以获得与未使用加载程序时相同的性能。当你这样做时,你直接调用驱动程序,加载程序的开销实际上为零。
所有可用的扩展都在 vulkan.h 中。扩展命令(函数)按提供它们的扩展进行排序,因此很容易判断特定命令需要哪个扩展。你也可以看看 spec;每个扩展都列在附录中,并列出了它添加的结构和命令。