Recently with the Vulkan 1.2.197 specification update, a new extension popped up that has plenty of developers happy with Dynamic Rendering and now The Khronos Group has formally announced it with a more detailed explanation. Extension info is of course aimed at developers, not most of us normal consumers but we still thought it interesting to highlight to bring more attention to it.
The Vulkan API is vitally important for Linux gaming, since it can provide much greater performance than OpenGL. It's used in the DXVK and VKD3D-Proton projects, which translate Direct 3D to Vulkan for use with Steam Play Proton, and it's the reason we see the performance level with it that we do when running Windows games.
When we were designing Vulkan 1.0, we had an idea to embed a task-graph-like object into Vulkan in the form of the render pass object. We knew the first version would be kind of restricted because we had an API to ship, and not long to do the work - but we had plans to extend the initial version, and those extensions would eventually provide significant flexibility to the API. Eventually, render passes would support all kinds of bells and whistles, including larger regions on input attachments, resolve shaders, and compute shaders! The idea was that these features would provide enough motivation to move all rendering to render pass objects and make the small amount of pain setting them up always worth it.
Fast forward to 2021, and the situation is not quite what we'd envisioned. On tiling GPUs, subpasses provide optimisation opportunities that can translate to impressive performance and efficiency wins. However, for many developers, subpasses either remain too restrictive to use or simply don't provide any practical benefit. For developers not using subpasses, render pass objects largely just get in the way.
It's time we addressed this.The Vulkan Working Group
The newly announced extension is VK_KHR_dynamic_rendering, allowing developers to tell the API to just start rendering with no render pass objects. They continued to mention that if developers aren't using "multiple subpasses or input attachments" to rip out their render pass objects, as Dynamic Rendering offers up similar performance but with a much simpler interface that should make writing Vulkan renderers "just a bit more enjoyable".
On the subject of the future of Vulkan, that was touched on too. Many of the issues solved previously were what they called "low hanging fruit" (easier stuff) but now they're beginning to tackle some of the more challenging issues for developers using Vulkan like this. This new extension in particular took "a lot of care and patience" to get right, and some big technical challenges for "some hardware vendors" had to be overcome too.
During 2022 they said to expect to see some of the more ambitious projects getting a release. It will be thoroughly interesting to see what they're cooking for the Vulkan API.