I'd like to add support for direct scanout on secondary GPUs in mutter. i.e. app becomes fullscreened on an output connected to the secondary GPU, we resend dmabuf feedback to include scanout formats for that GPU, the app reallocates buffers to use a scanout format, direct scanout takes place. When the screen leaves fullscreen dmabuf feedback is resent (no secondary scanout formats this time) and the existing buffer is copied to the primary GPU for rendered composition if needed until the app reallocates.
This is something I proposed for wlroots as well, so prior example here: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4055
There's some high level descriptions in that MR's description of how the flow works for this feature that might be helpful.
This is interesting from a performance perspective but it also opens the door to enabling features. Direct scanout is needed for GSync to take place, and some features like dynamic display muxing require the abili