The AMD Open Source Driver for Vulkan® is an open-source Vulkan driver for AMD Radeon™ graphics adapters on Linux®.

AMD Open Source Driver for Vulkan® architecture

The driver is built on top of AMD’s Platform Abstraction Library (PAL), a shared component that is designed to encapsulate certain hardware and OS-specific programming details for many of AMD’s 3D and compute drivers. Leveraging PAL can help provide a consistent experience across platforms, including support for recently released GPUs and compatibility with AMD developer tools.

Shaders that compose a particular VkPipeline object are compiled as a single entity using the LLVM-Based Pipeline Compiler (LLPC) library. LLPC builds on LLVM’s existing shader compilation infrastructure for AMD GPUs to generate code objects compatible with PAL’s pipeline ABI.

Product support

The AMD Open Source Driver for Vulkan is designed to support a wide range of AMD GPUs:

  • Radeon™ RX 7900/7600 Series
  • Radeon™ RX 6900/6800/6700/6600/6500 Series
  • Radeon™ RX 5700/5600/5500 Series
  • Radeon™ RX Vega Series
  • Radeon™ RX 400/500 Series
  • Radeon™ Pro WX 9100, x200 Series
  • Radeon™ Pro W5700/W5500 Series

Note: For Pre-Polaris and Pre-Raven GPUs, please use v-2021.Q2.5 or older release.

Operating system support

The AMD Open Source Driver for Vulkan is designed to support following distros and versions on both the AMDGPU upstream driver stack and the AMDGPU Pro driver stack:

  • Ubuntu 22.04 (amd64 version)
  • Ubuntu 20.04 (amd64 version)
  • RedHat 8.6 (x86-64 version)
  • RedHat 9.0 (x86-64 version)

The driver has not been well tested on other distros and versions. You may try it out on other distros and versions of your choice.

Feature support and performance

  • Vulkan 1.3
  • More than 30 extensions
  • Radeon™ GPU Profiler tracing
  • Built-in debug and profiling tools
  • Mid-command buffer preemption and SR-IOV virtualization

The following features and improvements are planned in future releases (Please refer to Release Notes for update of each release):

  • Upcoming versions of the Vulkan API
  • Hardware performance counter collection through RenderDoc
  • LLPC optimizations to improve GPU-limited performance and compile time
  • Optimizations to improve CPU-limited performance

How to contribute

You are welcome to submit contributions of code to the AMD Open Source Driver for Vulkan.

The driver is built from source code in four repositories: LLVM, LLPC, XGL, and PAL.

For changes to LLVM, you should submit contributions to the LLVM trunk. Commits there will be evaluated to merge back into the amd-gfx-gpuopen-master branch periodically.

For changes to XGL or PAL, please create a pull request against the dev branch. After your change is reviewed and if it is accepted, it will be evaluated to merge into the master branch in a subsequent regular promotion.

When contributing to XGL and PAL, your code should:

  • Match the style of nearby existing code. Your code may be edited to comply with our coding standards when it is merged into the master branch.
  • Avoid adding new dependencies, including dependencies on STL.

Please make each contribution reasonably small. If you would like to make a big contribution, like a new feature or extension, please raise an issue first to allow planning to evaluate and review your work.

More information

For more information, including detailed build instructions for both Ubuntu and RedHat Linux, installation instructions, how to get your new driver up and running, runtime settings customisation, and the built-in profiling present in the PAL layer, please head on over to GitHub and check out the README.md in the AMDVLK repository.

Read some of our Vulkan tutorials

Using Vulkan® Device Memory

This post serves as a guide on how to best use the various Memory Heaps & Memory Types exposed in Vulkan on AMD drivers, starting with some high-level tips.

Vulkan® Barriers Explained

Barriers control resource and command synchronisation in Vulkan applications and are critical to performance and correctness. Learn more here.

Understanding Vulkan® Objects

An important part of learning the Vulkan® API is to understand what types of objects are defined by it, what they represent and how they relate to each other.

Reducing Vulkan® API call overhead

This guest post, by Arseny Kapoulkine from Roblox, looks at the costs associated with calling various Vulkan functions tens or hundreds of thousands of times per frame, and ways to bring them down.

Not enough? Go visit some of our dedicated Vulkan pages

Vulkan®

Vulkan® gives software developers control over the performance, efficiency, and capabilities of AMD Radeon™ GPUs and multi-core CPUs.

Developing Vulkan® applications

Discover our Vulkan blog posts, presentations, samples, and more. Find out how we can help you create and optimize your Vulkan applications!