The Vulkan® Working Group has just released the VK_KHR_performance_query extension, which provides a cross-vendor common mechanism to expose performance metrics. These may be used to obtain data from a Vulkan device, typically a graphics card or SoC, to measure the workload demand and assess the impact of application modifications and optimizations. GPU vendor tools often provide such hardware counters, with the information tailored to their specific implementation. VK_KHR_performance_query provides a cross-vendor common mechanism to expose such counters, enabling third-party tools and in-engine profilers access in a standardized manner. Annotations are made in-line with existing Vulkan commands, so that it is possible to correlate specific bundles of work to the counter data captured – with the exact granularity dependent on hardware capabilities.
The effort to produce this extension was a collaborative effort within the Vulkan Working Group, with multiple contributors from across GPU vendors and game developers. The Vulkan Working Group particularly wishes to to call out the support of the LPGPU2 project with collaborators Codeplay, Samsung Electronics, and Think Silicon, that helped drive the effort. An Intel/Mesa implementation that exposes the extension for all their microarchitectures with Vulkan support is under review. A pull request is open to add support to RenderDoc, displaying the sampled counter data for each event in a frame capture. We expect more implementations to follow, with Arm intending to support this extension in future Vulkan drivers for the Mali™ GPUs; Qualcomm in future Vulkan drivers for Snapdragon™; Samsung Mobile supporting it on its Galaxy devices soon; and Intel Windows Vulkan drivers for all supported platforms shortly.