# obs-vkcapture: Vulkan and OpenGL game capture for OBS on Linux

> obs-vkcapture is a C plugin that lets OBS Studio capture Vulkan and OpenGL games on Linux, which the X11 capture path cannot do. It ships as a native build, an AUR package and two Flatpak packages, and the NVIDIA requirements are strict enough to be the first thing to check.

**nowrep/obs-vkcapture** — OBS Linux Vulkan/OpenGL game capture

- Repository: https://github.com/nowrep/obs-vkcapture
- Stars: 824 · Forks: 42
- Language: C
- License: GPL-2.0
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/nowrep-obs-vkcapture

## The capture problem on Linux

obs-vkcapture is an OBS plugin for Vulkan/OpenGL game capture on Linux, written in C. The name is fairly literal: it is the Vulkan capture path, with OpenGL support alongside it, packaged as an OBS Studio plugin.

The reason it exists is a long standing gap in OBS on Linux. The X11 capture source works by hooking into the X server and grabbing a window, which works for games that render through X. A game using Vulkan does not render through X in a way that X11 capture can intercept, and the same is true of some OpenGL applications outside an X session. The result for a streamer is a black source in OBS, and the usual advice, which is to run the game in a compatibility mode or through a different renderer, is a compromise.

This plugin takes a different route. It injects into the game's rendering path at the Vulkan or OpenGL layer rather than at the display server layer, and it does so as a launch-time injection. The game's command is not run directly; it is prefixed with obs-gamecapture, so the plugin can attach before the window appears.

That design is why the usage instructions are about launching the game rather than about configuring OBS, and it is worth understanding before installing, because it changes the workflow for anyone who normally starts games from a desktop shortcut or a launcher.

## The three distribution routes

The README lists three ways to get the plugin, and the choice between them is not a matter of preference but of how your setup is arranged.

The Arch Linux User Repository route is a git package, obs-vkcapture-git, linked from the README. That is the path for a native Arch installation where you would rather not build the plugin yourself.

For Flatpak there are two separate packages, and the distinction between them is the part that trips people up. The OBS plugin package is com.obsproject.Studio.Plugin.OBSVkCapture, which is the plugin itself. The capture tools package is org.freedesktop.Platform.VulkanLayer.OBSVkCapture, which is the layer and helper binaries that the plugin needs at runtime.

The README's Flatpak section spells out which combination applies. If you use Flatpak OBS, you need the Flatpak OBS plugin installed. If you use Flatpak Steam, you need the Flatpak capture tools installed so that games running inside the Flatpak Steam runtime can be captured. And for games running outside the Flatpak runtime, you need a native build regardless of whether your OBS is Flatpak or not.

That last line is the one to internalise. The Flatpak packages do not replace a native build for everything; they cover the Flatpak cases, and a native build is still needed for the rest. A setup with Flatpak OBS and native games needs both.

## Dependencies and building from source

The dependency list is short and mostly obvious for a graphics plugin: cmake, libobs, libvulkan, libgl and libegl are required, and libX11, libxcb, libwayland-client and wayland-scanner are listed as optional.

libobs is the OBS Studio plugin API, so a development package for it has to be present before anything compiles. libvulkan and libgl are the graphics APIs the plugin hooks, and libegl is the GL variant. The optional set covers the display server protocols, which suggests the plugin has some awareness of X11 and Wayland sessions, though the README does not say how the optional pieces are detected.

The build is a conventional CMake invocation.

```bash
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ..
make && make install
```

The install prefix of /usr is what puts the plugin where OBS looks for it. The repository layout is small and conventional for a plugin, with a CMakeLists.txt at the root, a src/ directory, a data/ directory for locale files, a dist/ directory, and a plugin-macros.h.in template that the build fills in with the version information.

The README does not document a make uninstall target, a list of installed paths or a way to change the install location beyond the CMake prefix, so a clean removal is a manual operation. That is worth knowing before you install into a system prefix.

## The runtime workflow: launch the game with capture enabled

Using the plugin is three steps, and the second one is the mechanism that matters.

First, add Game Capture to your OBS scene. Second, start the game with capture enabled, which means prefixing the game's command with obs-gamecapture and the %command% placeholder, so the launcher substitutes the real command. Third, optionally, start the game with only Vulkan capture enabled by setting the OBS_VKCAPTURE=1 environment variable in front of the same %command%.

The third step is marked as recommended, and the reason is a practical one. A game that uses both Vulkan and OpenGL, which is common, can end up with two capture candidates, and forcing Vulkan capture only removes the ambiguity and the chance of the wrong one being selected.

The environment variable is also how the source is labelled. Setting OBS_VKCAPTURE_NAME=custom_name_here changes the game name shown in the OBS source properties, which is how you distinguish two instances of the same game running side by side.

Everything here is environment variable driven rather than configured inside OBS, which is unusual and useful. A game launcher that lets you set environment variables, or a wrapper script, is enough to drive the whole thing, and there is no per-game configuration file to maintain.

## The NVIDIA requirements and other rough edges

The troubleshooting section of the README is short and points at NVIDIA first, and the requirements are specific enough that they should be checked before building anything.

A driver version of 515.43.04 or newer is required, and the nvidia-drm.modeset=1 kernel parameter is required as well. In a Wayland session, OBS has to be running on Wayland and not on XWayland. Those three conditions together explain the majority of the failures a user would hit, and the third one is the least obvious: on a Wayland desktop, launching OBS through an X11 path silently loses the capture even when the driver and kernel parameter are right.

Beyond NVIDIA, the README is silent on AMD and Intel. The presence of libgl and libegl in the dependency list means the OpenGL path is built for more than one vendor, but the documentation does not describe the requirements for either, and there is no troubleshooting section for them.

There is also no troubleshooting section for the Flatpak combinations. The README states which packages to install for which setup, but the failure modes when a layer is missing, or when a native build is expected and absent, are not documented, and a user hitting a black source in a Flatpak Steam game will have to work that out themselves.

The release history is also worth noting for a plugin that has to keep pace with driver and game changes. The recent releases are v1.5.6 from 2026-05-28, v1.5.5 from 2026-02-22 and v1.5.3 from 2025-08-26. The last push was on 2026-08-28, so the repository is not archived, but the tags are patch-level and roughly quarterly, which is a reasonable cadence for a capture plugin.

## How obs-vkcapture compares with OBS's built-in sources and with vkbasalt

The comparison with the sources OBS already has is the one that decides whether you need this at all. OBS on Linux offers X11 capture, PipeWire capture and Wayland capture depending on the version and the session. Those work for many games already, and the PipeWire path in particular has been the recommended answer for a while because it captures without the permissions the X11 path needs.

obs-vkcapture differs in approach in where it hooks. The built-in sources work at the display server or compositor level, which means they see what is on screen and can capture any window, including one that is not focused. The Vulkan layer approach injects into the game's own rendering, so it can capture a window that is off screen, on a different display, or minimised, and it can capture the frame before any post-processing that a compositor would apply. For a streamer running a game on a second monitor, that difference is worth having. For a streamer running one game full screen, it is not.

The second comparison is with vkbasalt and the general category of Vulkan layers. Those are global layers applied to Vulkan applications through the implicit layer mechanism, and they typically add post-processing such as a frame limiter or a sharpening filter. A capture layer does the opposite job, exporting frames rather than altering them. The two can coexist, since a layer stack can carry both a filter and a capture export, and a Flatpak capture tools package is the same kind of mechanism as the layer stack itself.

The practical difference between obs-vkcapture and a general Vulkan layer is that this one is purpose-built for OBS and integrates with its source properties, while a general layer requires a separate configuration step to write frames somewhere.

## Licence, project state and what to check first

The licence is GPL-2.0, with the LICENSE file at the root of the repository. A copyleft licence is the right choice for a plugin that links against the OBS plugin API, and it means the plugin source stays available to anyone who distributes a binary build of it.

The repository is not archived and the last push was on 2026-08-28, so the plugin is being maintained, and the release tags are patch-level, 1.5.6 being the most recent. There is no changelog file in the repository listing, so the release notes on the GitHub releases page are where the change history is.

Four things are worth checking before you build it, in the order they will bite.

First, whether your game is actually invisible to your existing OBS source. If X11 or PipeWire capture already shows it, this plugin solves a problem you do not have, and it adds a launch wrapper to your workflow for nothing.

Second, the packaging route. If your games run inside Flatpak Steam, you need the capture tools package; if your OBS is Flatpak, you need the Flatpak plugin; and for native games you need a native build regardless. The README's Flatpak section is the place to check this.

Third, the NVIDIA specifics if you are on NVIDIA: driver 515.43.04 or newer, the nvidia-drm.modeset=1 kernel parameter, and OBS running on Wayland rather than XWayland in a Wayland session.

Fourth, the capture mode. Start with OBS_VKCAPTURE=1 so only the Vulkan path is used, and set OBS_VKCAPTURE_NAME to a recognisable label so the source in OBS is identifiable when you have several. Those two environment variables cost nothing and remove the two most common sources of confusion in a first attempt.

## Conclusion

obs-vkcapture suits a Linux streamer whose games run on Vulkan or OpenGL and whose X11 capture path shows a black screen, and who is prepared to start the game through the plugin's launch command rather than from the desktop. It is the wrong tool if your games already capture correctly through OBS's X11 or PipeWire sources, since adding a Vulkan capture layer buys nothing there, and the wrong choice if you cannot meet the NVIDIA driver and kernel parameter requirements, because the plugin will not capture at all. Before building it, check whether your game runs inside Flatpak, because that determines which of the two Flatpak packages you need alongside the plugin.

## FAQ

### What does the obs-vkcapture plugin do?

It is an OBS plugin for Vulkan and OpenGL game capture on Linux, written in C. It captures games at the graphics API layer rather than through the X11 display server, so games that show as a black source in the normal OBS capture path become capturable.

### How do I build obs-vkcapture from source?

Install cmake, libobs, libvulkan, libgl and libegl, then run `mkdir build && cd build`, `cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ..` and `make && make install`. The X11, xcb, Wayland client and wayland-scanner dependencies are optional.

### How do I capture a game with obs-vkcapture?

Add Game Capture to your OBS scene, then launch the game with the command prefixed by obs-gamecapture and the %command% placeholder. Setting OBS_VKCAPTURE=1 in front of the same placeholder restricts capture to Vulkan only, and OBS_VKCAPTURE_NAME sets the name shown in the OBS source properties.

### Which packages do I need for Flatpak?

For Flatpak OBS you install the Flatpak OBS plugin, com.obsproject.Studio.Plugin.OBSVkCapture. For Flatpak Steam you install the Flatpak capture tools, org.freedesktop.Platform.VulkanLayer.OBSVkCapture, so games in the Flatpak Steam runtime can be captured. Games running outside the Flatpak runtime need a native build regardless of your OBS packaging.

### What are the NVIDIA requirements for obs-vkcapture?

A driver version of 515.43.04 or newer and the nvidia-drm.modeset=1 kernel parameter are required. In a Wayland session, OBS has to be running on Wayland and not on XWayland.

### Is obs-vkcapture available as a package?

Yes, the AUR package obs-vkcapture-git is linked from the README, and there are two Flatpak packages, one for the OBS plugin and one for the capture tools.

## Sources

- [Issues](https://github.com/nowrep/obs-vkcapture/issues)
- [License: GPL-2.0](https://github.com/nowrep/obs-vkcapture/blob/master/LICENSE)
- [nowrep/obs-vkcapture on GitHub](https://github.com/nowrep/obs-vkcapture)
- [README](https://github.com/nowrep/obs-vkcapture/blob/master/README.md)
- [Releases](https://github.com/nowrep/obs-vkcapture/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nowrep-obs-vkcapture
