What is Vulkan?

Vulkan is a low level API that gives direct access of the GPU 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 multi-threading capabilities with multi-core CPUs that keep the graphics pipeline loaded, enabling a new level of performance on existing hardware.

Vulkan is the first new generation, low-level 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.

Learn more about Vulkan here.

The Vulkan driver is a default component of the Linux For Tegra BSP release.

Jetson AGX Xavier, Jetson Xavier NX, Jetson Nano, Jetson TX2, and Jetson TX1 support Vulkan® 1.2[1] on Jetpack 4.4 and later. Prior Jetpack releases support Vulkan® 1.1.

Run vulkaninfo to determine the supported features and extensions of your device.

[1] Products are based on the published Vulkan® 1.2 specification and have been submitted to, and are expected to pass, the Khronos Conformance Process. Current conformance status can be found at khronos.org/conformance.

Vulkan Loader

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.

More information about the loader is available here: Vulkan Loader

Canonical provides a specific version of the loader with each 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 BSP release. This ensures applications can use the latest supported Vulkan API version.

The latest BSP release includes Vulkan loader version 1.2.132.

The Vulkan Loader can also be built on the device using the following steps:

  1. sudo apt-get update && sudo apt-get install git build-essential libx11-xcb-dev libxkbcommon-dev libwayland-dev libxrandr-dev cmake
  2. git clone https://github.com/KhronosGroup/Vulkan-Loader.git
  3. cd Vulkan-Loader && mkdir build && cd build
  4. ../scripts/update_deps.py
  5. cmake -DCMAKE_BUILD_TYPE=Release
    -DVULKAN_HEADERS_INSTALL_DIR=$(pwd)/Vulkan-Headers/build/install ..
  6. make -j8

To use the newly built loader:

$ export LD_LIBRARY_PATH=$(pwd)/loader

The newly built loader can be installed to /usr/local/lib by running sudo make install. Run ldconfig to refresh the system loader search cache.

Detailed instructions are available in Vulkan-Loader/BUILD.md

The upstream Vulkan loader source code is available in the following git repos:

Vulkan Validation Layers

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.

More information about the validation layers is available here: Vulkan Validation Layers

L4T SW Driver Package