Vulkan® Open Source Driver

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

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 6000 Series
  • Radeon™ HD 7000 Series
  • Radeon™ HD 8000M Series
  • Radeon™ R5/R7/R9 200/300 Series
  • Radeon™ RX 400/500 Series
  • Radeon™ M200/M300/M400 Series
  • Radeon™ RX Vega Series
  • Radeon™ RX 5700/5500 Series
  • AMD FirePro™ Workstation Wx000/Wx100/Wx300 Series
  • Radeon™ Pro WX x100 Series
  • Radeon™ Pro 400/500 Series
  • Radeon™ W5700/W5500 Series

Operating system support

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

  • Ubuntu 20.04 (64-bit version)
  • Ubuntu 18.04 (64-bit version)
  • RedHat 8.2 (64-bit version)
  • RedHat 7.8 (64-bit version)

Feature support and performance

The AMD Open Source Driver for Vulkan is designed to support the following features:

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

The following features and improvements are planned in future releases:

  • Upcoming versions of the Vulkan API
  • Hardware performance counter collection through RenderDoc
  • LLPC optimisations to improve GPU-limited performance and compile time
  • Optimisations 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 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® 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!