We're hiring!

NVK holiday update: What we've achieved, and where we're headed

Faith Ekstrand avatar

Faith Ekstrand
December 20, 2023

Share this post:

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.

Looking back at 2023

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.


Looking forward to 2024

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.

Trying out NVK

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!


Comments (0)

Add a Comment

Allowed tags: <b><i><br>Add a new comment:


Search the newsroom

Latest News & Events

FOSDEM 2024 - Recorded presentations (videos) now available


Collabora's engineers presented six talks over the course of the weekend, with topics including a review of recent improvements to GStreamer,…

A framework to share analytics data in GStreamer


Engineers have widely adopted GStreamer to build video analytics pipelines, and while many companies have indeed built their machine learning…

Wine on Wayland: A year in review (and a look ahead)


2023 was a great year for the Wayland driver for Wine. After several merge requests, many people are now already able to use the latest…

Open Since 2005 logo

We use cookies on this website to ensure that you get the best experience. By continuing to use this website you are consenting to the use of these cookies. To find out more please follow this link.

Collabora Ltd © 2005-2024. All rights reserved. Privacy Notice. Sitemap.