Skip to content

Latest commit

 

History

History
86 lines (58 loc) · 7.15 KB

development_tools.adoc

File metadata and controls

86 lines (58 loc) · 7.15 KB

Development Tools

The Vulkan ecosystem consists of many tools for development. This is not a full list and this is offered as a good starting point for many developers. Please continue to do your own research and search for other tools as the development ecosystem is much larger than what can reasonably fit on a single Markdown page.

Khronos hosts Vulkan Samples, a collection of code and tutorials that demonstrates API usage and explains the implementation of performance best practices.

LunarG is privately sponsored to develop and maintain Vulkan ecosystem components and is currently the curator for the Vulkan Loader and Vulkan Validation Layers Khronos Group repositories. In addition, LunarG delivers the Vulkan SDK and develops other key tools such as the Vulkan Configurator and GFXReconstruct.

Vulkan Layers

Layers are optional components that augment the Vulkan system. They can intercept, evaluate, and modify existing Vulkan functions on their way from the application down to the hardware. Layers are implemented as libraries that can be enabled and configured using Vulkan Configurator.

Khronos Layers

  • VK_LAYER_KHRONOS_validation, the Khronos Validation Layer. It is every developer’s first layer of defense when debugging their Vulkan application and this is the reason it is at the top of this list. Read the Validation Overview chapter for more details. The validation layer included multiple features:

    • Synchronization Validation: Identify resource access conflicts due to missing or incorrect synchronization operations between actions (Draw, Copy, Dispatch, Blit) reading or writing the same regions of memory.

    • GPU-Assisted Validation: Instrument shader code to perform run-time checks for error conditions produced during shader execution.

    • Shader printf: Debug shader code by “printing” any values of interest to the debug callback or stdout.

    • Best Practices Warnings: Highlights potential performance issues, questionable usage patterns, common mistakes.

  • VK_LAYER_KHRONOS_synchronization2, the Khronos Synchronization2 layer. The VK_LAYER_KHRONOS_synchronization2 layer implements the VK_KHR_synchronization2 extension. By default, it will disable itself if the underlying driver provides the extension.

Vulkan SDK layers

Besides the Khronos Layers, the Vulkan SDK included additional useful platform independent layers.

Vulkan Third-party layers

There are also other publicly available layers that can be used to help in development.

  • VK_LAYER_ARM_mali_perf_doc, the ARM PerfDoc layer. Checks Vulkan applications for best practices on Arm Mali devices.

  • VK_LAYER_IMG_powervr_perf_doc, the PowerVR PerfDoc layer. Checks Vulkan applications for best practices on Imagination Technologies PowerVR devices.

  • VK_LAYER_adreno, the Vulkan Adreno Layer. Checks Vulkan applications for best practices on Qualcomm Adreno devices.

Debugging

Debugging something running on a GPU can be incredibly hard, luckily there are tools out there to help.

Profiling

With anything related to a GPU it is best to not assume and profile when possible. Here is a list of known profilers to aid in your development.

  • AMD Radeon GPU Profiler - Low-level performance analysis tool for AMD Radeon GPUs.

  • Arm Streamline Performance Analyzer - Visualize the performance of mobile games and applications for a broad range of devices, using Arm Mobile Studio.

  • Intel® GPA - Intel’s Graphics Performance Analyzers that supports capturing and analyzing multi-frame streams of Vulkan apps.

  • OCAT - The Open Capture and Analytics Tool (OCAT) provides an FPS overlay and performance measurement for D3D11, D3D12, and Vulkan.

  • PVRTune

  • Qualcomm Snapdragon Profiler - Profiling tool targeting Adreno GPU.

  • VKtracer - Cross-vendor and cross-platform profiler.