Honour secondary GPU supported pixel formats
This series stops hardcoding the pixel format for secondary GPUs on the CPU copy path by choosing a pixel format from the set advertised by the DRM device.
There are two ways to get the supported pixel formats for a secondary GPU output, plus a fallback:
-
IN_FORMATS
DRM property which was already partially parsed but will now be parsed and stored in full; if that is not present, then - the list of supported formats on the primary plane, through the universal planes API;
- if neither above gives anything, fall back to a short hardcoded list.
Choosing the format is done based on a preferences list which favours the old hardcoded format if it is supported.
This series fixes the incorrectly swapped red/blue channels on DisplayLink proprietary driver stack. The DRM driver does not advertise the format that Mutter was hardcoded to use. Using an unsupported format causes the red/blue swap. In the future it might cause the output to not activate at all.
This series contains a little clean-up and a doc patch as well.