What is Vulkan?

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 multi-core 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.

Learn more about Vulkan here.

The Vulkan driver is a default component of the NVIDIA® Jetson™ Linux Driver Package.

Vulkan specification1 Jetson Linux version
Vulkan 1.3 34.x, 35.1
Vulkan 1.2 32.4.x
Vulkan 1.1 32.1, 32.2, 32.3
Vulkan 1.0 28.x

1Conformance status can be found at khronos.org/conformance.

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

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 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 each Jetson Linux release. This ensures applications can use the latest supported Vulkan API version.

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

Jetson Linux Driver Package