vulkan开发工具
Vulkan 生态系统有许多开发工具。因为篇幅有限,下面仅仅列出一些常用的工具,这里并没有列出所有的vulkan调试工具,请读者自行搜索研究其他相关工具。
Khronos 有一个开源工程 Vulkan Samples,它展示了Vulkan API 的用法并展示了性能最佳的使用方式。
LunarG 由私人赞助开发和维护 Vulkan 生态系统组件,目前是 Vulkan Loader 和 Vulkan Validation Layers Khronos 小组代码库的管理者。此外,LunarG 还负责发布 Vulkan SDK 和开发其他关键工具,例如 Vulkan Configurator 和 GFXReconstruct。
Vulkan Layer
Layer是 Vulkan系统的可选组件,它可以在应用程序中拦截、评估和修改现有的 Vulkan 功能。Layer使用系统动态库的实现方式,可以通过 Vulkan Configurator 启用和配置。
Khronos Leyer
- VK_LAYER_KHRONOS_validation,称为Khronos验证层(Khronos Validation Layer)。 它是每个开发人员在调试 Vulkan 应用程序时的第一个layer,这就是它位于此列表顶部的原因。更多详细信息请阅读 Validation Layer。 验证层包括多个功能:
- 同步验证:识别由于读写相同内存区域的操作,如(Draw、Copy、Dispatch、Blit)之间缺失或错误使 用同步操作而导致的资源访问冲突。
- GPU 辅助验证:检测着色器代码,防止着色器执行期间产生错误。
- Shader printf:在着色器中打印内容到 stdout 来调试着色器代码。
- 最佳实践警告:突出显示潜在的性能问题、可疑的使用方式以及常见错误。
Vulkan SDK Layer
除了 Khronos Layer之外,Vulkan SDK 还包括其他有用的平台独立层。
- VK_LAYER_LUNARG_api_dump,一个用于记录 Vulkan API 调用的Layer。该Layer将 API 调用、参数和返回值打印到标准输出流。
- VK_LAYER_LUNARG_gfxreconstruct,一个用于捕获 Vulkan trace的Layer。 该Layer是 GFXReconstruct 的一部分,用于捕获和重放 Vulkan API trace,同时也支持Android。GFXReconstruct 项目地址
- VK_LAYER_LUNARG_device_simulation,一个用于测试 Vulkan 应用程序可移植性的Layer。 该Layer可用于测试 Vulkan 应用是否可以在功能较低的 Vulkan 设备上运行。
- VK_LAYER_LUNARG_screenshot,用于屏幕截图的Layer。 将 Vulkan 应用的渲染图像保存到图像中。
- VK_LAYER_LUNARG_monitor,帧率监控Layer。 在窗口标题栏中显示 Vulkan 应用程序的实时帧率。
Vulkan 扩展 Layer
Vulkan 扩展层包含了一些扩展的实现。默认情况下,如果底层驱动程序提供了这些扩展,该Layer将自动禁用。
Vulkan 第三方 Layer
还有其他一些公开的Layer可用于帮助开发。
- VK_LAYER_IMG_powervr_perf_doc PowerVR的PerfDoc Layer。 检查 Vulkan 应用程序在 Imagination Technologies PowerVR 设备上的最佳实践。
- VK_LAYER_adreno Adreno Layer。 检查 Vulkan 应用程序在 Qualcomm Adreno 设备上的最佳实践。