LunarG updates the GPU-Assisted Validation white paper to reflect new validation for buffer accesses beyond the declared size of the buffer. This paper discusses several types of GPU-assisted validation that have been implemented in the validation layer. LunarG originally released GPU-assisted validation with the Vulkan 18.104.22.168 SDK. Read on for more information about this new validation and its description in the updated LunarG GPU-Assisted Validation white paper.
The Vulkan validation layers perform a variety of API usage checks during application execution. These checks verify that the application is using the API correctly by performing stateless parameter checking, object lifetime tracking, object state validation, and various other checks. The layers 1) perform these checks on the CPU as the Vulkan application executes and 2) provide valuable information about Vulkan API usage to the developer.
However, much of an application’s activity is on the GPU, where the CPU-based validation layers have little visibility. The new white paper explains the concept of GPU-assisted validation and how a developer can use it.
What is GPU-Assisted Validation?
GPU-assisted validation (or GPU-AV) involves using the GPU to check for API usage errors at shader execution time. These on-GPU checks can’t always find general shader program logic errors but can detect certain run-time problems like out-of-bounds (OOB) indexing into descriptor arrays and accessing invalid descriptors.
This feature’s design is intended to allow the developer to use nearly the same validation layer workflow on the GPU as on the CPU. This white paper discusses the types of GPU-assisted validation that have been implemented in a validation layer.
GPU-Assisted Validation Enhancements
The following checks for API usage errors are included in GPU-AV:
- Bindless Descriptor Access. Checking the indexing into an array of descriptors, otherwise known as “bindless” descriptor access.
- Descriptor Indexing. Validation for scenarios that arise when the VK_EXT_descriptor_indexing extension is enabled (allows applications increased flexibility when initializing or updating descriptors).
- Buffer Device Address Validation. Validation for scenarios that arise when the VK_EXT_buffer_device_address is enabled (detects out of bounds access using addresses that were obtained from calls to vkGetBufferDeviceAddressEXT).
- Buffer Accesses Out of Bounds. Update to validation code to include validation for buffer accesses beyond the declared size of the buffer.
GPU-assisted validation work is not complete. Look for future updates to LunarG’s GPU-Assisted Validation feature and the LunarG GPU-Assisted Validation white paper.
Info about LunarG, Inc.
LunarG’s software engineering experts create software solutions for open source and commercial customers using leading-edge 3D graphics and compute technologies, including Vulkan, OpenXR, SPIR-V, and OpenGL. We have strengths in performance analysis and tuning, runtime and tools development, shader optimizations, driver development, new feature development, and porting engines and applications to Vulkan. Our software engineering team is based in Fort Collins, Colorado. LunarG was founded by software experts who are passionate about 3D graphics.
For more information about LunarG, check out our website.