From 3820835414f6fbdb000e8a712d1573c10dc2a155 Mon Sep 17 00:00:00 2001 From: Etienne Lescot Date: Thu, 16 Jul 2026 09:50:32 +0200 Subject: [PATCH] fix(recording): disable Vulkan on Wayland so PipeWire capture can import DMA-BUF frames On Wayland the app forces ozone-platform=wayland and enables the WebRTC PipeWire capturer, but leaves Vulkan enabled. Chromium's Wayland Ozone backend can't use Vulkan, so when it initializes Vulkan the desktop-capture DMA-BUF frames fail to import into EGL: '--ozone-platform=wayland' is not compatible with Vulkan Error creating EGLImage - EGL_BAD_MATCH DMA-BUF modifier ... failed for format 12 (BGRA), marking as failed and renegotiating The stream then renegotiates and screen recording produces no usable frames. Append disable-features=Vulkan on Wayland so capture uses the GL/EGL path, which is what the DMA-BUF import expects. This is the fix Chromium itself suggests in the log. Reported on v1.7.0-rc.1 (Intel iGPU + Wayland). Needs validation on the reporter's setup. Co-Authored-By: Claude Opus 4.8 --- electron/main.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/electron/main.ts b/electron/main.ts index 4313bc035..12ce817fc 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -46,6 +46,12 @@ if (process.platform === "linux") { app.commandLine.appendSwitch("ozone-platform", "wayland"); // Enable WebRTCPipeWireCapturer for screen capture on Wayland app.commandLine.appendSwitch("enable-features", "WaylandWindowDrag,WebRTCPipeWireCapturer"); + // Chromium's Wayland Ozone backend can't use Vulkan. When it tries, the WebRTC + // PipeWire capturer fails to import DMA-BUF frames into EGL (EGL_BAD_MATCH), the + // stream renegotiates, and screen recording yields no usable frames. Force the + // GL/EGL path so DMA-BUF import works. (Chromium itself logs this suggestion: + // "'--ozone-platform=wayland' is not compatible with Vulkan ... disabling Vulkan".) + app.commandLine.appendSwitch("disable-features", "Vulkan"); } }