Vulkan Support on L4T
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 on Jetpack 4.4 and later. Prior Jetpack releases support Vulkan® 1.1.
vulkaninfo to determine the supported features and extensions of your device.
 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 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:
- sudo apt-get update && sudo apt-get install git build-essential libx11-xcb-dev libxkbcommon-dev libwayland-dev libxrandr-dev cmake
- git clone https://github.com/KhronosGroup/Vulkan-Loader.git
- cd Vulkan-Loader && mkdir build && cd build
- cmake -DCMAKE_BUILD_TYPE=Release
- 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