Faith Ekstrand
December 20, 2023
Reading time:
As 2023 draws to a close, I wanted to give a quick update on NVK, what's happened this year, and where we'll be headed in 2024. While previous posts have focused primarily on the technical details, this post will be more geared towards users.
A lot has happened in NVK this year and I mean a lot. At the end of 2022, we had a fairly bare-bones Vulkan 1.0 implementation that ran a few demos but that was about it. It was a good start but not really usable for much. Thanks to a lack of power management support in the kernel, game frame rates and benchmarks looked pitiful.
Looking at NVK today, the landscape has changed entirely. Since the initial announcement in 2022, we've implemented around 80 Vulkan extensions and major features, including nearly everything required for DXVK and Zink. I also wrote a brand new state-of-the-art shader compiler which is both more robust than the old codegen back-end and generates faster code. A number of games have gotten 10-20% faster just by turning on the new compiler. We've also fixed a lot of bugs leading to submitting Vulkan 1.0 conformance. While conformance doesn't mean much for most users, all that bug fixing has gotten quite a few games working. NVK isn't a toy driver anymore.
On the kernel side, the good folks at Red Hat have been hard at work building us an entirely new userspace API for memory management and command execution, as well as adding GSP firmware support. The new userspace API is required for implementing Vulkan properly. The GSP firmware is required to support newer hardware such as NVIDIA's Ada (RTX 4000-series) GPUs and brings with it proper power management support for everything Turing (RTX 2000-series) and later.
Thanks to proper power management and performance improvements in NVK, we are now hitting 40-60% of proprietary driver performance on several games. That's a long way from where we want to be but it also means 60-90FPS gaming with a decent card if you don't insist on 4K and ultra settings. On A Hat in Time, we're actually beating the NVIDIA proprietary driver in performance on some GPUs.
A Hat in Time running at 165 FPS on the NVIDIA proprietary driver. |
A Hat in Time running at 210 FPS on NVK. |
The first thing on my ToDo list for 2024 is to rewrite all of the pipeline code and implement VK_EXT_shader_object. This will also give us the last couple of features required for Vulkan 1.3. I can't promise Vulkan 1.3 conformance in January, but I hope to submit Turing and later GPUs sometime in February with actual conformance in March.
This pipeline rewrite is also the last major piece of the driver that I consider to be prototype quality code. Once that rewrite is complete and a few more bugs are fixed, we'll drop the -experimental
from the Meson config option and NVK will officially be out of beta. This will also signal distros to go ahead and ship NVK by default. The new userspace API is already shipping as part of Linux 6.6. The GSP firmware is in recent linux-firmware
packages and kernel support for using it will be included in Linux 6.7. All of that should be coming to your preferred distro in either a spring or fall release. I've already been talking with some of the Red Hat folks and we're currently hoping to ship NVK in Fedora 40.
From there, our focus will shift towards performance work and features required for D3D12 support through VKD3D-proton. We already have almost all of the features required for OpenGL 4.6 through Zink and D3D11 support through DXVK. A bunch of the D3D12 features are already in the works but there's still quite a bit of engineering work to do.
The other focus, of course, will be performance. When you combine NVK with Zink, we already perform better than the old Nouveau OpenGL driver. There are also quite a few games that are playable at 60 FPS or more. However, when you compare NVK against the proprietary NVIDIA driver, there is still a fairly large gap most of the time. If 2023 was about making games playable, 2024 will be about making games fast.
We are also continuing to work on Maxwell support. We don't have an ETA yet but the work is ongoing. Most of the work right now is in bringing up the new compiler on Maxwell. While the overall shape of the instruction set is largely the same as in Turing, it has an entirely different encoding. There are also some Maxwell-specific bugs as well as a few features that have to be implemented differently there. If you're looking to contribute to NVK, helping out with Maxwell support is an excellent area for new contributors.
If you're itching to try out NVK and don't want to wait for official distro packages, you can always build Mesa yourself. If you want full performance, you'll need a Linux 6.7 kernel and you have to set nouveau.config=NvGspRm=1
to enable the GSP firmware. If you're an Arch Linux user, there are packages available in the AUR. I'm working on trying to get preview builds easily available for other distros but it will take a little more time.
With that, have a happy holiday season and we'll be back with more improvements in 2024!
20/12/2024
The Rockchip RK3588 upstream support has progressed a lot over the last few years. As 2024 comes to a close, it is a great time to have…
09/12/2024
Collabora will be at NeurIPs this week to dive into the latest academic findings in machine learning and research advancements that are…
05/12/2024
Now based on Debian Bookworm, Apertis is a collaborative OS platform that includes an operating system, but also tools and cloud services…
Comments (0)
Add a Comment