nowrep / obs-vkcapture

OBS Linux Vulkan/OpenGL game capture
GNU General Public License v2.0
508 stars 25 forks source link

Capture output is only a black screen, despite executables being recognized. #151

Closed b02860de585071a2 closed 1 year ago

b02860de585071a2 commented 1 year ago

System info:

OS: Arch Linux Kernel: 6.3.4-arch1-1 GPU: Nvidia RTX 4080 (driver version 530.41.03-13) OBS version: 29.1.1-2 obs-vkcapture version: 1.3.3-1 Environment variables: OBS_USE_EGL=1, OBS_VKCAPTURE=1 Kernel parameters: nvidia_drm.modeset=1

Background:

After a recent clean reinstall of my primary system, I am now only getting a black screen in the source preview window (or recordings) when using "game capture". Window capture (Xcomposite) and screen capture (XSHM) both work normally.

Prior to this, I'd used obs-vkcapture for.......probably a year(?) with absolutely no issues. Exact same hardware, programs, everything. All that changed was wiping / and reinstalling Arch, in order to re-encrypt my root partition. I'm guessing I created some weird issue with XDG permissions or similar, but am unsure of where to start.

Issue:

When I add a game capture to an empty scene, then start a Steam game with the obs-gamecapture launch option set (no others), it will typically recognize the executable and attempt to use it. However, only a black screen is shown. OBS output usually looks like this when it happens:

info: [linux-vkcapture] Client 1 connected (pid=394802)
info: [linux-vkcapture] Client 1 not responding,
disconnecting...
info: [linux-vkcapture] Client 1 disconnected

I'm including the full output from OBS as well.

All that shows up in Steam is:

[obs-vkcapture] Init Vulkan 1.3.3
[obs-vkcapture] missing device extension: VK_EXT_external_memory_dma_buf

once or twice.

This has been tested with multiple games (native Linux builds and Proton [experimental, 8.0, 7.0, GE]) - and to reiterate, I just did a fresh reinstall of all programs, so this is starting from a clean slate.

I've also tested the Flatpak versions of Steam, OBS, and obs-vkcapture, and have tried building from source manually, just to make sure I wasn't missing anything. Please let me know what information or logs I can provide you with!

nowrep commented 1 year ago

You're probably missing the nvidia-drm.modeset=1 kernel parameter.

Also you don't need OBS_USE_EGL=1 anymore, that's only for OBS 27.

b02860de585071a2 commented 1 year ago

You're probably missing the nvidia-drm.modeset=1 kernel parameter.

Holy shit, I'm so stupid. Never debugging without sleep again.

/etc/mkinitcpio.conf got overwritten and was generating with the wrong kernel parameters. Guess I should have checked cat /proc/cmdline BEFORE looking at boot entry files...what you put in the files doesn't matter if they're not being applied :)

Everything works as normal now, closing this.

Thanks again for this fantastic software, I use it on almost a daily basis.

toby3d commented 1 year ago

Strange, but having the kernel parameter doesn't help. Without this parameter the OBS source does not recognize any games. With it, the source recognizes running games, but does not draw anything.

nowrep commented 1 year ago

Please open new issue, and make sure to include logs.

Also, since you say it recognizes games but doesn't show image, the import in OBS fails. If you are in Wayland session make sure OBS runs on Wayland too (not XWayland).