Vulkan® is a low-level API that gives direct GPU access to developers who want the ultimate control. With a simpler, thinner driver, Vulkan has less latency and overhead than traditional OpenGL® or OpenGL® ES. Vulkan has efficient multithreading capabilities with multicore CPUs that keep the graphics pipeline loaded, enabling a new level of performance on existing hardware.
Vulkan is the first new-generation graphics and compute API that is cross-platform. This allows developers to create applications for a variety of PC and mobile devices and operating systems. Like OpenGL, Vulkan is an open, royalty-free standard for any platform to adopt. For developers who prefer to remain on OpenGL, NVIDIA continues to maintain and support OpenGL and OpenGL ES.
To learn more about Vulkan, see Vulkan.
NVIDIA DRIVE® Linux supports the Vulkan 1.3 specification. For the latest Vulkan 1.3 specification with extensions, see:
https://www.khronos.org/registry/vulkan/specs/1.3-extensions/pdf/vkspec.pdf.
The descriptions for the Vulkan extensions can be found here: https://www.khronos.org/registry/vulkan/
You can determine exactly which Vulkan instance extensions your NVIDIA DRIVE™ product supports using code such as the following.
Where instance_exts_ptr
is a pointer to an array of VkExtensionProperties
structures that will contain extension names.
You can determine exactly which Vulkan device extensions your NVIDIA DRIVE® product supports using code such as the following:
Where physDevice
is the VkPhysicalDevice
that will be queried and device_exts_ptr
is a pointer to an array of VkExtensionProperties
structures that will contain extension names.
You can also find the supported features and extensions of your device by building the third-party vulkaninfo
app. This app can be built when you build the Vulkan loader from source. For more information about how to build the Vulkan loader from source, see the Vulkan Loader section.
Conformance status can be found at khronos.org/conformance.
Vulkan applications interact with Vulkan drivers through the loader. The loader is responsible for supporting multiple GPUs and their drivers. For supporting the latest Vulkan API version, the loader also needs to be the matching version.
For more information, see Vulkan Loader.
Canonical provides a specific version of the loader with each Ubuntu LTS release and it is not upgraded frequently. This limits the Vulkan driver’s ability to support the latest API version. To address this, NVIDIA now provides a compatible loader version along with the DRIVE OS Linux and QNX releases. This ensures that applications can use the latest supported Vulkan API version.
The upstream Vulkan loader source code is available in the following git repos:
The loader also supports the Vulkan validation layers, which are optional components that augment the Vulkan system. Layers can intercept, evaluate, and modify existing Vulkan functions on their way from the application down to the hardware. Layers are a critical component of developing correct Vulkan applications.
For more information about the validation layers, see Vulkan Validation Layers.