Consider switching to Cogl backend to GLES by default
While historically GL was preferred over GLES - AFAIK mainly because of better format support - today there are multiple arguments in favor of preferring GLES:
- GLES nowadays supports most GL features via extensions - most likely every one that we use (or want to use) in Mutter, in particular formats.
- It supports
OES_EGL_image_external
, allowing drivers to e.g. support the import YUV formats directly. There is even a (probably increasing) number of format/modifier combinations that can only be supported this way. This extension will likely never be ported to GL, see 1. below. - We even already use that extension for secondary GPU support.
- A number of other compositors like Weston and Sway use GLES, partly for the same reasons (YUV/multi-GPU).
- GLES is likely to be better supported on various embedded or mobile devices while not slower for common desktop drivers. Android is certainly a factor here.
Doing the switch for Mutter would AFAIK mainly require us to ensure we make use of modern GLES extensions wherever our current GLES backend currently lacks behind the GL 3.2 one. Most importantly we need to ensure to not use our packing fallbacks.
Context:
Edited by Robert Mader