The LunarG December 2021 SDK and Ecosystem Survey results have been tabulated! Read on to learn our ecosystem improvement plan for 2022.
2020 Vulkan Ecosystem & SDK Survey – 2021 Year-End Results
In November of 2020, 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.
Vulkan Productivity Feature: Shader Validation Caching
Shader validation caching is a feature recently added to the Vulkan Validation Layers. It is useful because it avoids the delays involved in re-validating shaders that have already been previously validated.
Vulkan Layer Symbiosis within the Vulkan Ecosystem – new LunarG white paper
The purpose of this whitepaper is to describe how to create a Vulkan Layer in symbiosis with the Vulkan ecosystem. By this, we mean creating a layer that can benefit from the tools of the Vulkan ecosystem while following the Vulkan ecosystem conventions so that Vulkan developers don’t have to keep up with constant new behaviors. Instead, we can rely on the behaviors familiar to developers and can focus on using the features of the layers. Click here to view the white paper.
SDK Version Compatibility for Vulkan
Vulkan was originally released in March of 2016. Since that time the Khronos Vulkan Working Group continues to update the Vulkan API. When new Vulkan releases become available, the version number associated with the API gets incremented. This document was originally published in May of 2018 to share the impact of the new Vulkan 1.1 release on applications written with Vulkan 1.0. We’ve updated this white paper to explain how new Vulkan 1.x releases may impact applications. The latest revisions include removing deprecated Vulkan version macros and adding a description of the newly defined Vulkan variant ID. Click here to download a copy of this white paper.
Vulkan Synchronization2 Validation
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.


