Chapter 6: modern Vulkan

Warning

This chapter is a work in progress (ETA October 2025)

The previous chapters in this guide mostly stuck to vanilla Vulkan 1.0, which was released in 2016. Many things changed since then: manufacturers thought up some new features for graphics cards, and Vulkan users and developers proposed changes to the API. These changes are made available through updates to the core specification for changes to the base API and feature considered important enough, and through extensions for the rest.

Many of these changes aim at making the lives of developers using Vulkan easier, be it by building alternative for existing constructs or by introducing higher level interfaces around GPU concepts. This is a balancing act: we would not want to want to get a bloated specification nor to reduce the amount of control that it gives us over GPUs. New versions mostly add things, but some features got deprecated over time, meaning that we can still use them, but we should feel bad if we do (see this list of deprecated features).

video

A. Dynamic rendering

In the graphics chapter, we went over Vulkan's classical rendering pipeline. Although most of that chapter remain valid, an important component thereof is now deprecated: exit render passes, subpasses and framebuffers, enter dynamic rendering. The main benefits of dynamic rendering is that it reduces the amount of required boilerplater and that it is a more flexible technique. Although it does not bring performance gains, it also does not detract from it, even on mobile.

B. Bindless descriptors

C. Shader objects

D. Buffer device addresses

E. Mesh shading