aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2016-04-18 18:24:53 +0200
committerUlf Hermann <ulf.hermann@qt.io>2016-04-20 08:57:42 +0000
commitd50a57f408a9cc160c187c012f51b8fa89738858 (patch)
tree40f8d9f4f0aa5fe423653f46444ba677801c2df6
parent26ff8f9029107877bfbfdc2f099f9b11861183ed (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.cpp2
-rw-r--r--src/quick/items/qquickshadereffect.cpp1
-rw-r--r--src/quick/items/qquickshadereffectnode.cpp4
-rw-r--r--src/quick/items/qquickshadereffectnode_p.h1
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;