Faith Ekstrand
April 22, 2025
Reading time:
As of today, NVK is now a conformant Vulkan 1.4 implementation on NVIDIA Maxwell (some GTX 700 and 800 series, most 900 series), Pascal (GTX 1000 series), and Volta (TITAN V) GPUs. Starting with Mesa 25.1, NVK will be enabled by default on these GPUs. We are currently planning to wait until at least Mesa 25.2 before switching these GPUs to use Zink by default to give it just a little more time to bake.
When we started work on NVK, we focused on Turing (GTX 16xx and RTX 2xxx series GPUs) and later. This was because those were the only GPUs with GSP support, enabling proper re-clocking and decent performance. Most of Maxwell, Pascal, and Volta are stuck forever at boot clocks due to firmware limitations which the Nouveau kernel module can't practically work around. Having a fancy new driver capable of playing D3D11 and D3D12 games is far less interesting on a GPU that barely runs fast enough to composite your desktop. However, we haven't forgotten about the old GPUs and we've been slowly working on adding support in the background for a while now.
Most of the work required for these GPUs was in bringing up the new Nouveau back-end compiler on Maxwell. Special thanks for the compiler work go out to Daniel Almeida at Collabora and Benjamin Lee who has helped out as a community contributor. While I definitely helped out some, they did most of the work to add all the older instruction encodings.
What about Kepler and Fermi?
This is a question we get asked fairly often so it's worth addressing. Kepler is quite similar to Maxwell in a lot of ways. The biggest difference is that it has two different instruction sets, neither of which line up with Maxwell so we need to add compiler support for those. (Older Kepler uses the Fermi instruction set.) Besides that, the driver generally works. It's been tested using the old compiler from the Nouveau GL driver and seems to mostly work, though it's hard to tell at this point what issues are driver issues and what are old compiler bugs.
The good news is that Kepler enabling work has already begun. We have a community member that's made good progress on the Kepler B compiler, and I (Faith) have a partial branch for Kepler A. While it's still early days and I'm hesitant to promise much, the Kepler enabling work has definitely begun. It will probably be a year or two before NVK is conformant on Kepler but hopefully it will happen eventually. The bad news is that Kepler will never get past Vulkan 1.2 due to hardware limitations. Vulkan 1.3 requires the vulkanMemoryModel
feature which Kepler is incapable of supporting.
Fermi is a bit more of a challenge. For one thing, the copy engine got reworked on Kepler so we would need to write totally new copy engine code for Fermi. This by itself isn't too much of an issue but it is a decent chunk of code to write. The bigger issue is that Fermi is missing support for bindless textures and the entire NVK descriptor architecture is built on bindless textures. Even though we use bound textures in some cases, it's done as an optimization, not something we can rely on. To support Fermi, we would likely need an entirely different descriptor model and that has far-reaching implications throughout the driver.
At this time, it's hard to predict whether Fermi support will happen at all. There are certainly people asking for it from time to time but no one has stepped up to do the work. It's also not clear whether or not it makes sense for Fermi to even live in the same driver, given how invasive the descriptor set changes would have to be.
None of this means that older hardware will stop being supported by Mesa, however. The old Nouveau GL driver will continue to be supported as much as it's ever been.
22/04/2025
As of today, NVK is a conformant Vulkan 1.4 implementation for NVIDIA Maxwell, Pascal, and Volta GPUs, and will be enabled by default starting…
17/04/2025
Our commitment to open source extends beyond contributing code. We are dedicated to upholding the highest standards of license compliance…
15/04/2025
This May, Embedded Recipes 2025, co-sponsored by Collabora, heads to Nice, France with talks, workshops, and a PipeWire hackfest, all bookended…
Comments (0)
Add a Comment