Synchronization Validation for the Vulkan API was first released in 2020 and has been substantially evolved to support Synchronization2. The newly released Vulkan API VK_KHR_synchronization2 extension brings extensive improvements to Vulkan queue submission, events, and pipeline barriers resulting in significant API usability enhancements for developers. Synchronization2 highlights include: Data for semaphores and command buffers is passed in arrays of structures, rather than in separate arrays spread across multiple structures, to streamline queue submissions. Barrier pipeline stage masks are now stored in the barrier structure rather than passed as separate parameters to vkCmdPipelineBarrier() to simplify resource state tracking. VkPipelineStageFlags2KHR and VkAccessFlags2KHR are expanded to 64-bits to allow for future extensibility with new extensions. vkCmdSetEvent2KHR() requires pipeline barriers, enhancing driver efficiency by scheduling work at event ‘set’ time, rather than the ‘wait’ for barrier information to become available. New image layout types now ‘do the right thing’ for both color and depth/stencil images. Also, image layout transitions do not happen if a barrier’s oldLayout and newLayout field are equal, even if the layout provided doesn’t match the current layout of the image. Synchronization2 brings big changes to Vulkan to improve developer productivity and application performance. Updates to the Vulkan SDK and vkconfig will improve API usability for developers. Click here to download a copy of the LunarG Vulkan Synchronization2 white paper that includes an introduction to Synchronization2 and instructions to help you get started.
Vulkan GPU-Assisted Validation
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 1.1.97.0 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.
Results Available for 2020 Vulkan SDK & Ecosystem Survey
The Vulkan SDK and Ecosystem Survey results have been tabulated! Read on for more information about the summary and next steps.
Guide to Vulkan Synchronization Validation
Correct synchronization is needed to ensure correct results from Vulkan operations (whether graphical or computational). Modern graphics hardware is both parallel and pipelined, with various operations happening simultaneously for performance reasons. Vulkan has a limited number of ordering guarantees, but for most operations, it is the application’s responsibility to inform the implementation when ordering is required between operations. The need for such synchronization operations arises when the same region of memory is used by subsequent operations in different ways — for example a mip-level being written by a blit operation, and then being used for sampled lookup by a shader. If these two uses are not guaranteed to operate sequentially, a data hazard exists. A Vulkan Synchronization Validation layer has been created to help 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. Click here to view the Guide to Vulkan Synchronization Validation, a LunarG white paper that provides an overview of synchronization and why it is important along with a quick start guide for new users. The reader will learn about synchronization validation and associated validation messages, how to use synchronization validation, and how to optimize it. Developers should be familiar with both Vulkan Synchronization and using/configuring Vulkan Validation before trying to run synchronization validation.
2019 Vulkan Ecosystem & SDK Survey – 2020 Year-End Results
In December of 2019, LunarG conducted a Vulkan ecosystem survey. Many Vulkan developers shared their requests for improvements. LunarG took those suggestions to heart and made many enhancements to the Vulkan ecosystem this year. We’ve prepared a report for the Vulkan developer community that summarizes our work. Read on for more information.
Where do I find the list of what’s included in the Vulkan SDK?
Vulkan SDK elements come from many repositories. Have you ever wondered what elements make up a Vulkan SDK?
New Guide to Vulkan Synchronization Validation
Correct synchronization is needed to ensure correct results from Vulkan operations (whether graphical or computational). A Vulkan Synchronization Validation layer has been created to help 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. LunarG offers a Guide to Vulkan Synchronization Validation to help developers get started.
Error Reporting Improvements for Vulkan Validation Layers
The Vulkan validation layers provide important information about the behavior and correctness of applications, and it is important that validation transfers this information to the user as clearly, usefully, and completely as possible. Community feedback, received through LunarXchange, Github, and Vulkan Ecosystem Surveys have highlighted several areas for improvement and we have recently turned our focus towards updating the layer messaging systems. Read on for more information about these improvements and a link to our new white paper.


