diff options
author | Louai Al-Khanji <louai.al-khanji@theqtcompany.com> | 2016-02-19 15:58:33 -0800 |
---|---|---|
committer | Louai Al-Khanji <louai.al-khanji@qt.io> | 2016-04-29 16:09:07 +0000 |
commit | ab2d5162039bd7dac6547a5984dbe6e19b7d835c (patch) | |
tree | 6e2f8da3c6e9340634821666c8b7079870f57566 /src/compositor/compositor_api/qwaylandquickitem_p.h | |
parent | aae5a5b19c320f367a7e43d54d84b0562a85737a (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.h | 36 |
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) |