A look at Vulkan extensions in Venus
When it comes to Vulkan applications and libraries, you'll be hard-pressed to write them without leveraging the ever-expanding list of Vulkan extensions made available to take advantage of the quirks and features graphics hardware has to offer. In brief, Vulkan extensions are addendums to the Vulkan specification that drivers are not required to support. They allow vendors to expand upon the existing API to allow the use of features that may be unique to a particular vendor or generation of devices without having to retrofit the core API.
Even in virtualized environments, the use of extended functionality for hardware-accelerated applications can be paramount for performance. Indeed, it is something that virtual graphics drivers, like Venus, must take into account.
Venus is a virtual Vulkan driver based on the Virtio-GPU protocol. Effectively a protocol on top of another protocol, it defines the serialization of Vulkan commands between guest and host. This post will cover details of the Venus driver, its components, and their relations in the context of extensions.