From a9f450db27086a410e5cdcb3324e0f1235a7749c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Fri, 15 Jul 2016 14:25:16 +0200 Subject: [PATCH] Allow to create an OpenGL Compositor with llvmpipe Summary: This is a radical change to the approach KWin used to have. So far KWin fall back to XRender compositing if it detected llvmpipe. With this change KWin will use OpenGL compositing also on llvmpipe. This has drawbacks: it's CPU emulated which we actually do not want. But the question is whether it still makes sense to keep the no-GL enforcement. There are several things to consider here: * QtQuick will use llvmpipe anyway (including things like Plasmashell) * glamor might be used in the xorg layer which also uses llvmpipe on XRender * more consistent look * we get OpenGL working in tests (important for e.g. openQA) * hardware which does not support proper GL gets less, there are GL drivers for KVM, there are GL drivers for rPI, etc. We don't need to block it anymore because of possibly bad results on those hardware. Also they mostly use glamor. * there is still the way to manually select XRender/QPainter compositing Reviewers: #kwin, #plasma Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D2184 --- libkwineffects/kwinglplatform.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libkwineffects/kwinglplatform.cpp b/libkwineffects/kwinglplatform.cpp index 03927d2ce8..2944e3ac8b 100644 --- a/libkwineffects/kwinglplatform.cpp +++ b/libkwineffects/kwinglplatform.cpp @@ -843,13 +843,14 @@ void GLPlatform::detect(OpenGLPlatformInterface platformInterface) } if (isSoftwareEmulation()) { - // we recommend XRender - m_recommendedCompositor = XRenderCompositing; if (m_driver < Driver_Llvmpipe) { + // we recommend XRender + m_recommendedCompositor = XRenderCompositing; // Software emulation does not provide GLSL m_limitedGLSL = m_supportsGLSL = false; } else { // llvmpipe does support GLSL + m_recommendedCompositor = OpenGL2Compositing; m_limitedGLSL = false; m_supportsGLSL = true; }