Skip to content
Tech News
← Back to articles

Vulkan is now available on NetBSD

read original more articles
Why This Matters

The availability of Vulkan on NetBSD marks a significant step toward expanding high-performance graphics support on the platform, enabling developers and users to access modern GPU capabilities. The automated, reproducible build process facilitates easier maintenance and future updates, paving the way for broader adoption and improved gaming, multimedia, and scientific applications on NetBSD.

Key Takeaways

An effort to bring the Vulkan software stack (Mesa / Lavapipe) to NetBSD, and to document and automate the process so it can be reproduced and maintained.

Status: beta — Lavapipe Vulkan driver builds, installs, and registers on NetBSD Milestone reached: Mesa configures, compiles, links, installs, and registers the Lavapipe software Vulkan driver on NetBSD 10.1 amd64, against LLVM 19.1.7. The driver ( libvulkan_lvp.so , ~17 MB) installs into /usr/pkg/lib , and its ICD manifest (advertising Vulkan API 1.4) installs into /usr/pkg/share/vulkan/icd.d/ , so a Vulkan loader on the system can discover it. ldd resolves every dependency cleanly. The entire process — environment setup, dependency builds, the Mesa build, and installation — is automated end to end and reproducible on a fresh install. Prebuilt binaries are coming. The tooling to build, fingerprint, and publish prebuilt artifacts is in place, and the build scripts already know how to fetch and install a matching prebuilt instead of building from source. Once a build machine is publishing releases, installing the driver will be a download rather than a multi-hour build. That's the near-term direction. What this is NOT (yet): Running Vulkan programs needs the loader. This project builds and installs the Vulkan driver (the Lavapipe ICD). Actually executing a Vulkan application also requires the Vulkan loader ( libvulkan.so.1 ), which is the next component to bring up. Runtime execution is therefore not yet verified.

This project builds and installs the Vulkan driver (the Lavapipe ICD). Actually executing a Vulkan application also requires the Vulkan loader ( ), which is the next component to bring up. Runtime execution is therefore not yet verified. One workaround is still in place. The build applies -Wno-error=format to sidestep GCC rejecting Mesa's %m format specifier on NetBSD. A proper upstreamable fix (using strerror(errno) ) is pending. Steps, scripts, and documents will continue to change as the loader and the release pipeline come together.

Goal

NetBSD is currently the only major BSD without Vulkan support. The aim of this project is to:

Build the Vulkan software stack (Mesa's Lavapipe driver, which runs on the CPU via LLVM and needs no GPU) on NetBSD. Document every step, including the dead ends, so the process is reproducible. Automate the setup so a fresh machine can be brought to a build-ready state with a couple of scripts. Eventually feed the necessary fixes upstream (to Mesa and to pkgsrc) and provide prebuilt binaries or a pkgsrc package, so that Vulkan on NetBSD becomes something you can simply install rather than build from source.

Scope and environment

Target OS: NetBSD 10.1 (amd64), minimal ISO install.

NetBSD 10.1 (amd64), minimal ISO install. Host: VirtualBox VM.

VirtualBox VM. Build goal only: This targets compilation and linkage of the Vulkan stack. Runtime GPU acceleration is not available under VirtualBox; the software driver (Lavapipe) is the target.

... continue reading