开发工具

Vulkan 生态系统由许多用于开发的工具组成。 这不是完整列表,它只是为许多开发人员提供一个良好的起点。 请继续进行您自己的研究并搜索其他工具,因为开发生态系统比单个 Markdown 页面可以合理容纳的内容要大得多。

Khronos 托管了 Vulkan 示例,这是一个代码和教程的集合,演示了 API 的用法并解释了性能最佳实践的实现。

LunarG 受到私人赞助,以开发和维护 Vulkan 生态系统组件,并且目前是 Vulkan 加载器Vulkan 验证层 Khronos Group 存储库的管理者。 此外,LunarG 还提供 Vulkan SDK 并开发其他关键工具,例如 Vulkan 配置器GFXReconstruct

Vulkan 层

层是增强 Vulkan 系统的可选组件。 它们可以拦截、评估和修改从应用程序到硬件的现有 Vulkan 函数。 层以库的形式实现,可以使用 Vulkan 配置器启用和配置。

Khronos 层

  • VK_LAYER_KHRONOS_validation,Khronos 验证层。 它是每个开发人员调试 Vulkan 应用程序时的第一道防线,这也是它在此列表顶部的理由。 阅读验证概述章节以了解更多详细信息。 验证层包含多个功能

    • 同步验证:识别由于在读取或写入相同内存区域的操作(绘制、复制、调度、位块传输)之间缺少或不正确的同步操作而导致的资源访问冲突。

    • GPU 辅助验证:对着色器代码进行检测,以执行在着色器执行期间产生的错误条件的运行时检查。

    • 着色器 printf:通过将任何感兴趣的值“打印”到调试回调或 stdout 来调试着色器代码。

    • 最佳实践警告:突出显示潜在的性能问题、有问题的用法模式、常见错误。

Vulkan SDK 层

除了 Khronos 层之外,Vulkan SDK 还包含其他有用的平台独立层。

  • VK_LAYER_LUNARG_api_dump,一个用于记录 Vulkan API 调用的层。 API 转储层将 API 调用、参数和值打印到已标识的输出流。

  • VK_LAYER_LUNARG_gfxreconstruct,一个用于捕获使用 Vulkan 创建的帧的层。 此层是 GFXReconstruct 的一部分,GFXReconstruct 是一种用于捕获和重放 Vulkan API 调用的软件。 完整的 Android 支持也可在 https://github.com/LunarG/gfxreconstruct 获得

  • VK_LAYER_LUNARG_device_simulation,一个用于测试 Vulkan 应用程序可移植性的层。 设备模拟层可用于测试 Vulkan 应用程序是否可以在功能较低的 Vulkan 设备上运行。

  • VK_LAYER_LUNARG_screenshot,一个屏幕截图层。 将 Vulkan 应用程序的渲染图像捕获为可查看的图像。

  • VK_LAYER_LUNARG_monitor,一个帧率监视器层。 在窗口标题栏中显示 Vulkan 应用程序的 FPS,以提示性能。

Vulkan 扩展层

Vulkan 扩展层是一个实现并非在所有地方都可用的扩展的层集合。 默认情况下,如果底层驱动程序提供了扩展,则这些层将自行禁用。

Vulkan 第三方层

还有其他公开可用的层可以用于帮助开发。

  • VK_LAYER_IMG_powervr_perf_doc,PowerVR PerfDoc 层。 检查 Imagination Technologies PowerVR 设备上 Vulkan 应用程序的最佳实践。

  • VK_LAYER_adreno,Vulkan Adreno 层。 检查 Qualcomm Adreno 设备上 Vulkan 应用程序的最佳实践。

调试

调试在 GPU 上运行的内容可能非常困难,幸运的是,有一些工具可以提供帮助。

以下工具可帮助调试崩溃。

性能分析

对于与 GPU 相关的任何内容,最好不要假设,并且尽可能进行性能分析。 以下是已知的分析器列表,可帮助您进行开发。