swaywm / wlroots

A modular Wayland compositor library
https://gitlab.freedesktop.org/wlroots/wlroots/
MIT License
2.15k stars 342 forks source link

Improve multi-GPU buffer sharing #1347

Open emersion opened 5 years ago

emersion commented 5 years ago

On multi-GPU setups we render everything on one primary GPU and then we copy buffers around to display them on secondary GPUs. This is done by exporting a DMA-BUF on the primary GPU, importing it on the secondary GPU, and rendering it on the secondary GPU:

https://github.com/swaywm/wlroots/blob/11dc1f65d216acf31e81addb9817091e8d9ba9a6/backend/drm/renderer.c#L216

Instead we should use direct scan-out to skip rendering on the secondary GPU. This could be the groundwork for https://github.com/swaywm/wlroots/issues/1270.


wlroots has migrated to gitlab.freedesktop.org. This issue has been moved to:

https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1347

VincentVanlaer commented 5 years ago

From issues we had with #1531 this doesn't seem possible on some drivers (radeon) because they can't scan-out from DMA-BUFs (which don't live in VRAM, but in system memory) directly. It would make more sense to copy the bo from system memory to VRAM, instead of using GL, but GBM doesn't have a way to copy buffers.

emersion commented 5 years ago

Weston has a bunch of checks to figure out if a buffer is suitable for scan-out.

Maybe we could try to scan-out and fallback to a copy if it doesn't work, too.

emersion commented 4 years ago

Use-cases:

We could try these strategies:

emersion commented 4 years ago

The copy could be improved with:

d4g commented 4 years ago

Is there any update on this?

emersion commented 3 years ago

Ref https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/810