diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2016-04-18 18:24:53 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2016-04-20 08:57:42 +0000 |
commit | d50a57f408a9cc160c187c012f51b8fa89738858 (patch) | |
tree | 40f8d9f4f0aa5fe423653f46444ba677801c2df6 | |
parent | 26ff8f9029107877bfbfdc2f099f9b11861183ed (diff) |
Drop the class name from shader effect material keys
Shader effects with equal program source code can use the same compiled
shaders. There is no need to duplicate the data for each QML component.
Task-number: QTBUG-42055
Change-Id: Iae86890ebf0ad6ef34a63565b8a01d0fcd903fbc
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
-rw-r--r-- | src/particles/qquickcustomparticle.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffect.cpp | 1 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffectnode.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffectnode_p.h | 1 |
4 files changed, 1 insertions, 7 deletions
diff --git a/src/particles/qquickcustomparticle.cpp b/src/particles/qquickcustomparticle.cpp index 5e244ba02c..e62c6f556b 100644 --- a/src/particles/qquickcustomparticle.cpp +++ b/src/particles/qquickcustomparticle.cpp @@ -284,8 +284,6 @@ QQuickShaderEffectNode *QQuickCustomParticle::prepareNextFrame(QQuickShaderEffec builder.appendSourceFile(QStringLiteral(":/particles/shaders/customparticle.vert")); s.sourceCode[Key::VertexShader] = builder.source() + s.sourceCode[Key::VertexShader]; - s.className = metaObject()->className(); - material->setProgramSource(s); material->attributes = m_common.attributes; foreach (QQuickShaderEffectNode* node, m_nodes) diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp index 47c67e0e1c..94fa7e92e3 100644 --- a/src/quick/items/qquickshadereffect.cpp +++ b/src/quick/items/qquickshadereffect.cpp @@ -1035,7 +1035,6 @@ QSGNode *QQuickShaderEffect::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDa builder.appendSourceFile(QStringLiteral(":/qt-project.org/items/shaders/shadereffect.vert")); s.sourceCode[Key::VertexShader] = builder.source(); } - s.className = metaObject()->className(); material->setProgramSource(s); material->attributes = m_common.attributes; diff --git a/src/quick/items/qquickshadereffectnode.cpp b/src/quick/items/qquickshadereffectnode.cpp index df030d15a7..b9c94af717 100644 --- a/src/quick/items/qquickshadereffectnode.cpp +++ b/src/quick/items/qquickshadereffectnode.cpp @@ -327,8 +327,6 @@ const char *QQuickCustomMaterialShader::fragmentShader() const bool QQuickShaderEffectMaterialKey::operator == (const QQuickShaderEffectMaterialKey &other) const { - if (className != other.className) - return false; for (int shaderType = 0; shaderType < ShaderTypeCount; ++shaderType) { if (sourceCode[shaderType] != other.sourceCode[shaderType]) return false; @@ -343,7 +341,7 @@ bool QQuickShaderEffectMaterialKey::operator != (const QQuickShaderEffectMateria uint qHash(const QQuickShaderEffectMaterialKey &key) { - uint hash = qHash((const void *)key.className); + uint hash = 1; typedef QQuickShaderEffectMaterialKey Key; for (int shaderType = 0; shaderType < Key::ShaderTypeCount; ++shaderType) hash = hash * 31337 + qHash(key.sourceCode[shaderType]); diff --git a/src/quick/items/qquickshadereffectnode_p.h b/src/quick/items/qquickshadereffectnode_p.h index 8a7fd6c3a5..d3d3f72410 100644 --- a/src/quick/items/qquickshadereffectnode_p.h +++ b/src/quick/items/qquickshadereffectnode_p.h @@ -65,7 +65,6 @@ struct QQuickShaderEffectMaterialKey { }; QByteArray sourceCode[ShaderTypeCount]; - const char *className; bool operator == (const QQuickShaderEffectMaterialKey &other) const; bool operator != (const QQuickShaderEffectMaterialKey &other) const; |