Using Vulkan extensions correctly
Vulkan relies heavily on extensions. Extensions are functions and types that are part of the Vulkan Specification; they are provided in addition to the core API but aren’t guaranteed to exist for a particular version of the API. Either they are experimental or vendor- and card-specific and are not guaranteed to be present, either at compile time or runtime. Official extensions are registered with the Khronos Group and are part of the spec, so you can find their documentation there.
Extensions may be introduced to a Vulkan Specification version and later promoted to the core set of functionalities on a newer version. Or not at all! The functionality to present rendering results to a surface (such as a window on a GUI), for example, is still an extension even in Vulkan 1.3 (the most recent version as of the writing of this book). If you are curious, here’s a link to it, the VK_KHR_surface
device extension: https://registry.khronos.org...