You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
obs-browser picture is blank on Wayland/AMDÂ #4354
@magreenblatt Yes, it’s from #4238, and I found the cause. Since 156 the capture buffers are no longer forced to be linear, so on AMD the driver picks a DCC modifier, and those buffers carry extra metadata planes (2 or 3 for a single-plane BGRA format). The allocation works, but VideoFrame::WrapMappableSharedImage() in media/base/video_frame.cc rejects any handle whose plane count doesn’t match the format, so the capturer never gets its first frame, logs “Unable to allocate frame for first frame capture: OOM?” and stops. CefVideoConsumerOSR::OnStopped() is empty, so nothing recovers and the view stays blank. It reproduces on every AMD setup I’ve tried, it doesn’t depend on the compositor, and NVIDIA buffers are always single-plane, so they’re not affected.
I’m preparing a Chromium CL that accepts handles with extra planes when they carry a modifier, which keeps the compression, and I’ll link it here once it’s up. It would be good to carry it as a CEF patch on 156 and master until it rolls in. I’d also like CEF to stop going silently blank when the capturer stops.
Until then, setting AMD_DEBUG=nodcc in the app’s environment works around it without losing hardware acceleration, as long as Chromium’s GPU process inherits it.
The Chromium CL is up: https://crrev.com/c/8789062. It applies cleanly to 156, so I can open a CEF PR that carries it as a patch on 156 and master, if that works for you, or you'd rather wait for it to get merged first.
Activity
magreenblatt commentedon Nov 10, 2026
@krissedout any thoughts on this?
krissedout commentedon Nov 10, 2026
@magreenblatt Yes, it’s from #4238, and I found the cause. Since 156 the capture buffers are no longer forced to be linear, so on AMD the driver picks a DCC modifier, and those buffers carry extra metadata planes (2 or 3 for a single-plane BGRA format). The allocation works, but VideoFrame::WrapMappableSharedImage() in media/base/video_frame.cc rejects any handle whose plane count doesn’t match the format, so the capturer never gets its first frame, logs “Unable to allocate frame for first frame capture: OOM?” and stops. CefVideoConsumerOSR::OnStopped() is empty, so nothing recovers and the view stays blank. It reproduces on every AMD setup I’ve tried, it doesn’t depend on the compositor, and NVIDIA buffers are always single-plane, so they’re not affected.
I’m preparing a Chromium CL that accepts handles with extra planes when they carry a modifier, which keeps the compression, and I’ll link it here once it’s up. It would be good to carry it as a CEF patch on 156 and master until it rolls in. I’d also like CEF to stop going silently blank when the capturer stops.
Until then, setting AMD_DEBUG=nodcc in the app’s environment works around it without losing hardware acceleration, as long as Chromium’s GPU process inherits it.
krissedout commentedon Nov 11, 2026
The Chromium CL is up: https://crrev.com/c/8789062. It applies cleanly to 156, so I can open a CEF PR that carries it as a patch on 156 and master, if that works for you, or you'd rather wait for it to get merged first.