Today the RADV Radeon Vulkan driver is landing in mainline Mesa and just hit the Git code minutes ago. Merging the RADV driver came up just over the past few weeks in time for next month's Mesa stable release while this community-based driver was developed over the summer by David Airlie and Bas Nieuwenhuizen. This "unofficial" Radeon Vulkan open-source driver is now becoming part of the Mesa code-base with it being able to support the few Vulkan Linux games but isn't yet a fully conformant driver. Here are fresh benchmarks of the RADV driver compared to the RadeonSI OpenGL driver and benchmarks compared to AMD's hybrid closed-source AMDGPU-PRO driver on several different graphics cards.
RADV As The (Unofficial) Radeon Vulkan Driver For Linux
Since last year AMD communicated that they would be initially releasing a closed-source Vulkan Linux driver that would later be open-sourced. We are about eight months past the Vulkan 1.0 release, but this Vulkan Linux driver has yet to be open-sourced. In the absence of the open-source Radeon Vulkan driver, David Airlie and Bas Nieuwenhuizen set out to develop their own "community" based Radeon Vulkan driver at least as an interim solution and potentially to pressure AMD to get out their official Vulkan driver. Bas Nieuwenhuizen is an independent contributor while David Airlie is the DRM subsystem maintainer and Red Hat developer who has long been involved in open-source AMD/ATI Linux driver efforts.
This new driver, RADV, is housed within a Mesa Git branch but is being merged to mainline Mesa today. RADV re-uses the AMDGPU LLVM compiler back-end, makes use of Intel's work on NIR within Mesa, and interfaces with the AMDGPU kernel DRM driver. Airlie explained in his original RADV announcement that this Radeon Vulkan driver is based upon Intel's "ANV" open-source Vulkan driver while the winsys to interface with the AMDGPU DRM kernel code is ported from Gallium3D.
The RADV approach basically goes from SPIR-V through the NIR intermediate representation to LLVM IR for consumption by the AMDGPU LLVM back-end. There isn't any "Vulkan state tracker" for Gallium3D with this Khronos API being too low-level for implementing on top of Gallium.
Back in August the RADV driver began rendering Dota 2 correctly, a few weeks later then began running The Talos Principle and vkQuake without issues. Now it's hitting mainline Mesa and in turn will be reaching more Linux distributions. The bring-up of RADV was very brisk due to being able to re-use a lot of existing open-source Linux driver code and the fact that Vulkan drivers are much lighter/thinner than OpenGL drivers.
Due to the success of RADV, there has been communication from John Bridgman and others that their focus may shift from working to open-source their proprietary driver to instead focus on helping with code contributions to areas of RADV where it needs to be improved... We heard this weeks ago but still haven't seen any major contributions by AMD to the RADV driver stack. We'll see in the weeks/months ahead regarding what AMD open-sources for Vulkan, but it seems RADV is taking hold and the open-source AMD developers haven't objected to seeing this driver merged into mainline Mesa.
Current Driver State
While this RADV driver can run the currently available Vulkan Linux games (Dota 2, vkQuake and Talos Principle), it's not fully conformant with Vulkan 1.0 as some features are still missing. Additionally, there is much room still for more performance optimizations. Just keep that in mind before getting your hopes too high...
The Radeon Vulkan driver isn't built by default with Mesa builds but requires setting the --with-vulkan-drivers=radeon argument. Additionally, Mesa must be built against LLVM 3.9 or newer. Also keep in mind your GPU needs to be supported by the AMDGPU kernel driver, see the next section about hardware support.
Current Hardware Support
The RADV driver was developed around Volcanic Islands (Fury, Tonga, etc) and Polaris (RX 400 series) hardware. This is in conjunction with the AMDGPU kernel driver. However, if making use of the experimental CIK and SI support in AMDGPU, it should be possible to get older GCN GPUs working with this Vulkan driver. The GCN 1.1 CIK support has been around as an experimental build-time option on recent Linux kernel releases while the GCN 1.0 Southern Islands experimental support is only landing with Linux 4.9. This requires spinning your own kernel or finding a third-party kernel build that's enabling this functionality for AMDGPU. The RADV driver will not work with the Radeon DRM driver nor will it be ported to any pre-GCN (HD 7000 series) hardware.
For seeing the state of the RADV driver, I tested out the latest code (David Airlie's radv-submit2 branch) as of this morning as the code being merged this evening to mainline Mesa. This was tested with the Linux 4.8 stable kernel. The focus for testing was on various Volcanic Islands and Polaris graphics cards. In a follow-up article will be tests with CIK/SI GPUs. More details and the benchmark results on the following pages -- unless you are a Phoronix Premium member helping to support the site and where you get to view this article as a single-page.