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
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.
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.
For changes to LLVM, you should submit contributions to the LLVM trunk. Commits there will be evaluated to merge back into the
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.
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
Read some of our Vulkan tutorials
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 are unique as they requires you to provide what resources are transitioning and also specify a source and destination pipeline stage.
An important part of learning the Vulkan® API is to understand what types of objects are defined in it, what they represent and how they relate to each other.
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.