AMD Open Source Driver for Vulkan

Drivers, SDKs and Libraries


The AMD Open Source Driver for Vulkan® is an open-source Vulkan driver for AMD Radeon™ graphics adapters on Linux®. It 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™ 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
  • AMD FirePro™ Workstation Wx000/Wx100/Wx300 Series
  • Radeon™ Pro WX x100 Series
  • Radeon™ Pro 400/500 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 16.04.3 (64-bit version)
  • RedHat 7.4 (64-bit version)

Feature Support and Performance

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

  • Vulkan 1.1
  • 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 three repositories: LLVM, XGL (including both Vulkan API translation and LLPC) 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-vulkan-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.

IMPORTANT: By creating a pull request, you agree to allow your contribution to be licensed by the project owners under the terms of the MIT license.

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.

IMPORTANT: Since PAL is a shared component that must support other APIs, other operating systems, and pre-production hardware, you might be asked to revise your PAL change for reasons that might not be obvious from a pure Linux Vulkan driver perspective.

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.