Open-Source NVIDIA Vulkan Driver NVK Now Supports Older GPUs, New Extensions

NVK also received better support for DXVK and support for multiple Vulkan extension.
NVK

Collabora informs 9to5Linux today about the latest features that landed in NVK, Collabora’s open-source Vulkan driver for NVIDIA hardware that aims to be part of the Mesa graphics stack.

Development on NVK kicked off almost nine months ago and it looks like the open-source NVIDIA Vulkan driver is getting more mature and in a pretty decent state for Linux gaming.

Since then, NVK gained support for older, pre-Turing NVIDIA graphics cards from the Maxwell and Kepler series, support for geometry, tessellation, and transform feedback to support modern video games, as well as better support for the DXVK Vulkan-based implementation of D3D9, D3D10, and D3D11 for Linux / Wine.

“Echo has been playing around with NVK+DXVK a bit and has succeeded in getting some games playing,” says Collabora’s Faith Ekstrand in a blog post. “It’s still early days and requires some hacks. However, there are a few titles working and I was able to demo Hollow Knight and F1 2017 at the Collabora meet-up in May.”

NVK also received support for more Vulkan extensions, including VK_KHR_draw_indirect_count and VK_KHR_sampler_ycbcr_conversion, and it also looks like the open-source NVIDIA Vulkan drive will soon support newer Vulkan specifications up to version 1.3.

NVK is not yet considered to be a conformant Vulkan implementation as it needs to pass the Vulkan conformance test suite, but Collabora is working hard to fix the remaining failures. In addition, they’ve been working on some performance improvements to make NVK more stable and reliable for proper gaming.

For now, Collaboara doesn’t have a time frame for when NVK will be upstreamed into the Mesa graphics stack, but they said that it will be upstreamed along with the new kernel API, which is required in order to implement Vulkan correctly in various scenarios.

The new kernel API will be based on userspace-controlled VM bindings and DRM sync objects, and it’s required to enable NVK to correctly handle depth and stencil buffers, as well as MSAA for pre-Turing NVIDIA hardware. Soon, it will also receive the ability to control page tables from userspace and proper timeline semaphore support.

Collabora’s Linux 3D graphics developer Faith Ekstrand also revealed the fact that she’s been working lately on a new back-end compiler for NVIDIA hardware written in Rust, called NAK (Nvidia Awesome Kompiler), as a replacement for nv50 on modern GPUs.

“Overall, I’ve been very happy with Rust as a language for back-end compiler development. It’s way more fun writing Rust code than C or C++,” said Ekstrand. “Currently, I’m only targeting Turing GPUs. It will be expanded to more hardware eventually.”

Last updated 8 months ago

Buy Me a Coffee at ko-fi.com