Skip to content

Revert "shell: Use the basic scene graph rendering loop on wayland"

Vlad Zahorodnii requested to merge work/zzag/revert-basic-loop-master into master

This reverts commit 9c998d30.

There are two issues with basic render loop on Wayland:

  • Same OpenGL context is reused across windows with incompatible EGLConfigs. It results in QOpenGLContext::makeCurrent() failing for some windows. At quick glance, it seems to be fixed with RHI
  • QQuickWindowPrivate::flushFrameSynchronousEvents() can be called by QSGRenderLoop in the middle of painting after making opengl context current. That, by itself, is a source of undefined behavior because current opengl context can be different after QQuickWindowPrivate::flushFrameSynchronousEvents() is called. This can result in eglSwapBuffers() failing due to wrong read & draw surfaces and QtWayland ending in a broken state.

The first issue should be fixed by just upgrading to Qt 6. The second issue needs to be fixed.

Unfortunately, it affects the stability of plasmashell. There are threading issues in QtWayland that cannot be fixed without changing qtdeclarative and qtbase. With this, plasmashell will use threaded renderer and hit those threading issues again.

CCBUG: 447717

Merge request reports