From 05605d89f9db80bb748c16ea19c566ab0995027e Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 11 Apr 2016 10:29:21 +0200 Subject: Make QQuickShaderEffectMesh generic There is nothing GL-specific here (apart from the attribute name list but that will likely remain that way with non-GL backends as well). By moving a few constants it can now be built unconditionally. Change-Id: I866b7b5c0262588a39818b177455f6276f8d584b Reviewed-by: Andy Nichols --- src/quick/items/items.pri | 4 ++-- src/quick/items/qquickitemsmodule.cpp | 6 ++++-- src/quick/items/qquickshadereffect.cpp | 27 +++++++-------------------- src/quick/items/qquickshadereffect_p.h | 3 --- src/quick/items/qquickshadereffectmesh.cpp | 14 +++++++++++++- src/quick/items/qquickshadereffectmesh_p.h | 7 +++++-- 6 files changed, 31 insertions(+), 30 deletions(-) (limited to 'src/quick') diff --git a/src/quick/items/items.pri b/src/quick/items/items.pri index cad63a39c4..ee58fef1c4 100644 --- a/src/quick/items/items.pri +++ b/src/quick/items/items.pri @@ -73,6 +73,7 @@ HEADERS += \ $$PWD/qquickwindowattached_p.h \ $$PWD/qquickwindowmodule_p.h \ $$PWD/qquickshadereffectsource_p.h \ + $$PWD/qquickshadereffectmesh_p.h \ $$PWD/qquickrendercontrol.h \ $$PWD/qquickrendercontrol_p.h @@ -124,6 +125,7 @@ SOURCES += \ $$PWD/qquickscreen.cpp \ $$PWD/qquickwindowattached.cpp \ $$PWD/qquickshadereffectsource.cpp \ + $$PWD/qquickshadereffectmesh.cpp \ $$PWD/qquickrendercontrol.cpp # Items that depend on OpenGL Renderer @@ -131,7 +133,6 @@ contains(QT_CONFIG, opengl(es1|es2)?) { SOURCES += \ $$PWD/qquickopenglinfo.cpp \ $$PWD/qquickshadereffect.cpp \ - $$PWD/qquickshadereffectmesh.cpp \ $$PWD/qquickshadereffectnode.cpp \ $$PWD/qquickframebufferobject.cpp \ $$PWD/qquickspriteengine.cpp \ @@ -147,7 +148,6 @@ contains(QT_CONFIG, opengl(es1|es2)?) { $$PWD/qquickspritesequence_p.h \ $$PWD/qquickanimatedsprite_p.h \ $$PWD/qquickshadereffect_p.h \ - $$PWD/qquickshadereffectmesh_p.h \ $$PWD/qquickshadereffectnode_p.h \ $$PWD/qquickframebufferobject.h \ $$PWD/qquickitemgrabresult.h diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp index 00837363ab..763133c39b 100644 --- a/src/quick/items/qquickitemsmodule.cpp +++ b/src/quick/items/qquickitemsmodule.cpp @@ -81,6 +81,7 @@ # include "qquickanimatedsprite_p.h" # include "qquickopenglinfo_p.h" #endif +#include "qquickshadereffectmesh_p.h" #include "qquickdrag_p.h" #include "qquickdroparea_p.h" #include "qquickmultipointtoucharea_p.h" @@ -211,11 +212,12 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) qmlRegisterType(); qmlRegisterType("QtQuick", 2, 0, "ShaderEffectSource"); -#ifndef QT_NO_OPENGL - qmlRegisterType("QtQuick", 2, 0, "ShaderEffect"); qmlRegisterUncreatableType("QtQuick", 2, 0, "ShaderEffectMesh", QQuickShaderEffectMesh::tr("Cannot create instance of abstract class ShaderEffectMesh.")); qmlRegisterType("QtQuick", 2, 0, "GridMesh"); +#ifndef QT_NO_OPENGL + qmlRegisterType("QtQuick", 2, 0, "ShaderEffect"); #endif + qmlRegisterUncreatableType("QtQuick", 2, 0, "PaintedItem", QQuickPaintedItem::tr("Cannot create instance of abstract class PaintedItem")); qmlRegisterType("QtQuick", 2, 0, "Canvas"); diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp index 41b7ea3896..a2c2ebb380 100644 --- a/src/quick/items/qquickshadereffect.cpp +++ b/src/quick/items/qquickshadereffect.cpp @@ -50,25 +50,12 @@ #include "qquickimage_p.h" #include "qquickshadereffectsource_p.h" +#include "qquickshadereffectmesh_p.h" #include -#include QT_BEGIN_NAMESPACE -static const char qt_position_attribute_name[] = "qt_Vertex"; -static const char qt_texcoord_attribute_name[] = "qt_MultiTexCoord0"; - -const char *qtPositionAttributeName() -{ - return qt_position_attribute_name; -} - -const char *qtTexCoordAttributeName() -{ - return qt_texcoord_attribute_name; -} - namespace { enum VariableQualifier { @@ -256,14 +243,14 @@ void QQuickShaderEffectCommon::updateParseLog(bool ignoreAttributes) { parseLog.clear(); if (!ignoreAttributes) { - if (!attributes.contains(qt_position_attribute_name)) { + if (!attributes.contains(qtPositionAttributeName())) { parseLog += QLatin1String("Warning: Missing reference to \'"); - parseLog += QLatin1String(qt_position_attribute_name); + parseLog += QLatin1String(qtPositionAttributeName()); parseLog += QLatin1String("\'.\n"); } - if (!attributes.contains(qt_texcoord_attribute_name)) { + if (!attributes.contains(qtTexCoordAttributeName())) { parseLog += QLatin1String("Warning: Missing reference to \'"); - parseLog += QLatin1String(qt_texcoord_attribute_name); + parseLog += QLatin1String(qtTexCoordAttributeName()); parseLog += QLatin1String("\'.\n"); } } @@ -339,8 +326,8 @@ void QQuickShaderEffectCommon::updateShader(QQuickItem *item, Key::ShaderType sh if (code.isEmpty()) { // Optimize for default code. if (shaderType == Key::VertexShader) { - attributes.append(QByteArray(qt_position_attribute_name)); - attributes.append(QByteArray(qt_texcoord_attribute_name)); + attributes.append(QByteArray(qtPositionAttributeName())); + attributes.append(QByteArray(qtTexCoordAttributeName())); UniformData d; d.name = "qt_Matrix"; d.specialType = UniformData::Matrix; diff --git a/src/quick/items/qquickshadereffect_p.h b/src/quick/items/qquickshadereffect_p.h index fb266d4c44..c43e4a558e 100644 --- a/src/quick/items/qquickshadereffect_p.h +++ b/src/quick/items/qquickshadereffect_p.h @@ -63,9 +63,6 @@ QT_BEGIN_NAMESPACE -const char *qtPositionAttributeName(); -const char *qtTexCoordAttributeName(); - class QSGContext; class QSignalMapper; class QQuickCustomMaterialShader; diff --git a/src/quick/items/qquickshadereffectmesh.cpp b/src/quick/items/qquickshadereffectmesh.cpp index 0811025654..478954e142 100644 --- a/src/quick/items/qquickshadereffectmesh.cpp +++ b/src/quick/items/qquickshadereffectmesh.cpp @@ -39,10 +39,22 @@ #include "qquickshadereffectmesh_p.h" #include -#include "qquickshadereffect_p.h" QT_BEGIN_NAMESPACE +static const char qt_position_attribute_name[] = "qt_Vertex"; +static const char qt_texcoord_attribute_name[] = "qt_MultiTexCoord0"; + +const char *qtPositionAttributeName() +{ + return qt_position_attribute_name; +} + +const char *qtTexCoordAttributeName() +{ + return qt_texcoord_attribute_name; +} + QQuickShaderEffectMesh::QQuickShaderEffectMesh(QObject *parent) : QObject(parent) { diff --git a/src/quick/items/qquickshadereffectmesh_p.h b/src/quick/items/qquickshadereffectmesh_p.h index 7f9c95888c..c3dcb0322e 100644 --- a/src/quick/items/qquickshadereffectmesh_p.h +++ b/src/quick/items/qquickshadereffectmesh_p.h @@ -43,8 +43,8 @@ #include #include #include -#include -#include +#include +#include #ifndef QQUICKSHADEREFFECTMESH_P_H #define QQUICKSHADEREFFECTMESH_P_H @@ -62,6 +62,9 @@ QT_BEGIN_NAMESPACE +const char *qtPositionAttributeName(); +const char *qtTexCoordAttributeName(); + class QSGGeometry; class QRectF; -- cgit v1.2.3