Alpha-composited window screencasts
See commits. This MR needed work in different layers, and it's roughly organized as follows:
- Make Cogl winsys code receive an explicit pixel format to create DMA-BUFs
- Implement that in MetaRendererNative
- Add a new vfunc for screencast streams to report a preferred stream format
- Use that value to inform PipeWire, and let it negotiate a proper stream format
- Make window streams prefer an alpha-composited format
In the end, the expected outcome of this MR is that monitor, area, and virtual screencasts continue to use opaque formats; but window casts report an alpha AND a fallback opaque format.
I could verify this using OBS Studio - monitor capture continues to resolve to RGBX, whereas window captures resolve to RGBA: