summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandquickitem_p.h
diff options
context:
space:
mode:
authorLouai Al-Khanji <louai.al-khanji@theqtcompany.com>2016-02-19 15:58:33 -0800
committerLouai Al-Khanji <louai.al-khanji@qt.io>2016-04-29 16:09:07 +0000
commitab2d5162039bd7dac6547a5984dbe6e19b7d835c (patch)
tree6e2f8da3c6e9340634821666c8b7079870f57566 /src/compositor/compositor_api/qwaylandquickitem_p.h
parentaae5a5b19c320f367a7e43d54d84b0562a85737a (diff)
QtWaylandCompositor: Add support for different EGL buffer formats
Change-Id: Idfeeedbf247fa81dccdf28a1aa04f878900ed262 Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Diffstat (limited to 'src/compositor/compositor_api/qwaylandquickitem_p.h')
-rw-r--r--src/compositor/compositor_api/qwaylandquickitem_p.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/compositor/compositor_api/qwaylandquickitem_p.h b/src/compositor/compositor_api/qwaylandquickitem_p.h
index eab99f8f3..5c953771e 100644
--- a/src/compositor/compositor_api/qwaylandquickitem_p.h
+++ b/src/compositor/compositor_api/qwaylandquickitem_p.h
@@ -49,6 +49,8 @@
//
#include <QtQuick/private/qquickitem_p.h>
+#include <QtQuick/QSGMaterialShader>
+#include <QtQuick/QSGMaterial>
#include "qwaylandquickitem.h"
@@ -59,6 +61,40 @@ QT_BEGIN_NAMESPACE
class QWaylandSurfaceTextureProvider;
class QMutex;
+class QWaylandBufferMaterialShader : public QSGMaterialShader
+{
+public:
+ QWaylandBufferMaterialShader(QWaylandBufferRef::BufferFormatEgl format);
+
+ void updateState(const RenderState &state, QSGMaterial *newEffect, QSGMaterial *oldEffect) Q_DECL_OVERRIDE;
+ char const *const *attributeNames() const Q_DECL_OVERRIDE;
+
+protected:
+ void initialize() Q_DECL_OVERRIDE;
+
+private:
+ const QWaylandBufferRef::BufferFormatEgl m_format;
+ int m_id_matrix;
+ int m_id_opacity;
+ QVarLengthArray<int, 3> m_id_tex;
+};
+
+class QWaylandBufferMaterial : public QSGMaterial
+{
+public:
+ QWaylandBufferMaterial(QWaylandBufferRef::BufferFormatEgl format);
+ ~QWaylandBufferMaterial();
+
+ void bind();
+
+ QSGMaterialType *type() const Q_DECL_OVERRIDE;
+ QSGMaterialShader *createShader() const Q_DECL_OVERRIDE;
+
+private:
+ const QWaylandBufferRef::BufferFormatEgl m_format;
+ QVarLengthArray<GLuint, 3> m_textures;
+};
+
class QWaylandQuickItemPrivate : public QQuickItemPrivate
{
Q_DECLARE_PUBLIC(QWaylandQuickItem)