diff --git a/composite.cpp b/composite.cpp
index 1d8d2838ee..6351e520f7 100644
--- a/composite.cpp
+++ b/composite.cpp
@@ -862,6 +862,22 @@ QString Compositor::compositingType() const
}
}
+QStringList Compositor::supportedOpenGLPlatformInterfaces() const
+{
+ QStringList interfaces;
+ bool supportsGlx = (kwinApp()->operationMode() == Application::OperationModeX11);
+#ifdef KWIN_HAVE_OPENGLES
+ supportsGlx = false;
+#endif
+ if (supportsGlx) {
+ interfaces << QStringLiteral("glx");
+ }
+#ifdef KWIN_HAVE_EGL
+ interfaces << QStringLiteral("egl");
+#endif
+ return interfaces;
+}
+
/*****************************************************
* Workspace
****************************************************/
diff --git a/composite.h b/composite.h
index 7e18a660c0..a53cdd3629 100644
--- a/composite.h
+++ b/composite.h
@@ -79,6 +79,16 @@ class Compositor : public QObject {
* @li @c gles OpenGL ES 2
**/
Q_PROPERTY(QString compositingType READ compositingType)
+ /**
+ * @brief All currently supported OpenGLPlatformInterfaces.
+ *
+ * Possible values:
+ * @li glx
+ * @li egl
+ *
+ * Values depend on operation mode and compile time options.
+ **/
+ Q_PROPERTY(QStringList supportedOpenGLPlatformInterfaces READ supportedOpenGLPlatformInterfaces)
public:
enum SuspendReason { NoReasonSuspend = 0, UserSuspend = 1<<0, BlockRuleSuspend = 1<<1, ScriptSuspend = 1<<2, AllReasonSuspend = 0xff };
Q_DECLARE_FLAGS(SuspendReasons, SuspendReason)
@@ -158,6 +168,7 @@ public:
QString compositingNotPossibleReason() const;
bool isOpenGLBroken() const;
QString compositingType() const;
+ QStringList supportedOpenGLPlatformInterfaces() const;
public Q_SLOTS:
void addRepaintFull();
diff --git a/org.kde.kwin.Compositing.xml b/org.kde.kwin.Compositing.xml
index ed83fd0289..4b657f0513 100644
--- a/org.kde.kwin.Compositing.xml
+++ b/org.kde.kwin.Compositing.xml
@@ -6,6 +6,7 @@
+