This repository provides the AMD Open Source Driver for Vulkan (AMDVLK) for Radeon graphics adapters on Linux. It targets developers and power users seeking an open-source Vulkan implementation, offering features like Vulkan 1.4 support and extensive extension coverage, built upon AMD's Platform Abstraction Library (PAL) and LLVM-based Pipeline Compiler (LLPC).
How It Works
AMDVLK is built on AMD's Platform Abstraction Library (PAL), a shared component designed to encapsulate hardware and OS-specific details for various AMD drivers. This approach ensures consistency across platforms and compatibility with AMD developer tools. Shader compilation is handled by the LLVM-Based Pipeline Compiler (LLPC), which leverages LLVM's infrastructure for AMD GPUs to generate code objects compatible with PAL's pipeline ABI. This differs from AMD's closed-source driver, which uses a separate pipeline compiler.
Quick Start & Requirements
- Build from Source: Requires CMake 3.21+, C++20 support (GCC 9+, Clang 11+), Ninja, and specific development packages for Ubuntu/RedHat. Building also necessitates installing DirectXShaderCompiler and glslang.
- Pre-built Packages: Available via
dpkg
(Ubuntu) or rpm
(RedHat), or through a dedicated APT repository for Ubuntu.
- Dependencies: Vulkan SDK (1.3.290+ recommended for shader compiler tools),
libssl3
(Ubuntu), openssl-libs
(RedHat).
- OS Support: Ubuntu 22.04/24.04 (amd64), RedHat 9.0/10.0 (x86-64).
- GPU Support: Radeon RX 9070, 7000, 6000, 5000 series, and Radeon Pro W5700/W5500. For pre-GFX10 GPUs, use v-2023.Q3.3 or older.
- Kernel: Recommended 5.3+ for upstream driver stack.
- Setup Time: Building from source involves significant dependency installation and compilation time. Pre-built packages offer faster deployment.
- Documentation: https://github.com/GPUOpen-Drivers/AMDVLK/blob/master/README.md
Highlighted Details
- Supports Vulkan 1.4 and over 180 extensions.
- Includes Radeon GPUProfiler tracing and built-in debug/profiling tools.
- Features mid-command buffer preemption and SR-IOV virtualization.
- Offers runtime settings for driver behavior customization and debugging.
Maintenance & Community
- Contributions are welcome via pull requests to the
dev
branch for XGL, LLPC, GPURT, and PAL. LLVM changes should target the LLVM trunk.
- Community channels are not explicitly listed in the README.
Licensing & Compatibility
- License: MIT License for contributions to XGL, LLPC, GPURT, and PAL. LLVM is under Apache License v2.0 with LLVM Exceptions. MetroHash and CWPack have Apache 2.0 and MIT licenses, respectively.
- Compatibility: Suitable for commercial use and linking with closed-source applications.
Limitations & Caveats
- The driver is primarily tested on specific Ubuntu and RedHat versions; other distributions may require manual configuration.
- Timeline semaphore extension requires Linux kernel 5.5+ or a Vulkan timeline semaphore layer.
- Some features like hardware performance counter collection via RenderDoc are planned for future releases.