Skip to content

Honour secondary GPU supported pixel formats

Pekka Paalanen requested to merge ppaalanen/mutter:mr/secondary-formats into master

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.

Merge request reports