Skip to content

compositor: Merge the OpenGL 2 and 3 backends

This change merges the two OpenGL backends into one making the current default of GLCore the overall default. It becomes the first context to try to create. If it fails, it will automatically fall back to the (previous) OpenGL 2 backend.

Reasoning: the differentiation of OpenGL 2 and 3 is a very technical one and hard to understand for users. It is not obvious which one is better or should be used. This results in many user discussions like "Which backend to use?"

Back when the OpenGL 3 backend was introduced the dedicated feature made sense. It was a new code base using new driver features. Nowadays the code base in KWin is robust and mature and so are the drivers. A driver advertising support for OpenGL 3 will support OpenGL 3. We don't have to plan for driver breakage in this area any more.

Also our code evolved through the context attribute builder which gives us the possibility to more easily fall back in case we cannot create the context. Thus the need to select the backend is not so important as it used to be when the feature got introduced.

If a user still wants to force OpenGL2, it is still possible by setting the appropriate environment variables like MESA_GL_VERSION_OVERRIDE.

This change brings the improvement that the backend selection is now completely removed from the compositing KCM. Screenshot_20211006_204556

Merge request reports