GNOME DMA-BUF Screencasting Now Limited To Intel Drivers Due To Bugs Elsewhere
Prior to tagging Mutter 3.38 for this week's GNOME 3.38 desktop release there was a last-minute change around the DMA-BUF screencasting feature.
Earlier this year GNOME developers wired up DMA-BUF screencasting support for GNOME on Wayland. With making use of DMA-BUF for buffer sharing to avoid excess image copies between CPU and GPU memory, the screencasting functionality is much more efficient. GNOME screencasting is just one of many projects making use of this zero-copy buffer sharing support.
But now for the 3.38.0 release, the DMA-BUF screencasting code is set to only work if the Intel i915 DRM kernel driver is at play. Due to other GPU drivers reportedly having buggy DMA-BUF handling, the developers are only comfortable for now enabling it for Intel with their well-tested DMA-BUF code path.
The change by Red Hat's Jonas Ådahl commented, "Seems DMA buffer based interprocess buffer sharing is more broken than not, so for now only enable it when using the i915 driver. For example vmwgfx, qxl and radeon, it results in mmap() failing to mmap the memory region. Other drivers, e.g. amdgpu will function, but may hit very slow memory download paths, resulting in worse performance."
Hopefully the AMDGPU driver and other DRM drivers can get their DMA-BUF buffer sharing code improved upon in short order.