aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2024-01-30 14:49:29 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2024-01-30 13:49:21 +0000
commite617fc96db7f4ea52223aaaa4f1a3e60b334c64e (patch)
tree4efc6f14cd3f0d3a3e2673d5f579a9ade016b988
parent3ec2cd1f0bfcd1df1ae6e032ec0ce2b5902b3e97 (diff)
EffectComposer: Fix generated code for mipmap effects
Mipmap effects need layer.smooth and layer.mipmap to work correctly. Fixes: QDS-11793 Change-Id: I8f04ca9f144f51d0032d995c2bafdcb0c95ad73d Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
-rw-r--r--src/plugins/effectcomposer/effectcomposermodel.cpp14
-rw-r--r--src/plugins/effectcomposer/shaderfeatures.cpp4
-rw-r--r--src/plugins/effectcomposer/shaderfeatures.h3
3 files changed, 20 insertions, 1 deletions
diff --git a/src/plugins/effectcomposer/effectcomposermodel.cpp b/src/plugins/effectcomposer/effectcomposermodel.cpp
index 966465ff31..1edc70c75b 100644
--- a/src/plugins/effectcomposer/effectcomposermodel.cpp
+++ b/src/plugins/effectcomposer/effectcomposermodel.cpp
@@ -618,6 +618,20 @@ R"(
)"
};
+ if (m_shaderFeatures.enabled(ShaderFeatures::Mipmap)) {
+ QString mipmap1{
+ R"(parent.layer.smooth = true
+ parent.layer.mipmap = true
+ %1)"
+ };
+ QString mipmap2{
+ R"(_oldParent.layer.smooth = false
+ _oldParent.layer.mipmap = false
+ %2)"
+ };
+ parentChanged = parentChanged.arg(mipmap1, mipmap2);
+ }
+
parentChanged = parentChanged.arg(m_shaderFeatures.enabled(ShaderFeatures::Source)
? QString("source = parent") : QString(),
m_shaderFeatures.enabled(ShaderFeatures::Source)
diff --git a/src/plugins/effectcomposer/shaderfeatures.cpp b/src/plugins/effectcomposer/shaderfeatures.cpp
index 5690db5f17..fc1cf95a34 100644
--- a/src/plugins/effectcomposer/shaderfeatures.cpp
+++ b/src/plugins/effectcomposer/shaderfeatures.cpp
@@ -73,8 +73,12 @@ void ShaderFeatures::checkLine(const QString &line, Features &features)
if (m_gridMeshWidth > 1 || m_gridMeshHeight > 1)
features.setFlag(GridMesh, true);
}
+
if (line.contains("@blursources"))
features.setFlag(BlurSources, true);
+
+ if (line.contains("textureLod("))
+ features.setFlag(Mipmap, true);
}
int ShaderFeatures::gridMeshHeight() const
diff --git a/src/plugins/effectcomposer/shaderfeatures.h b/src/plugins/effectcomposer/shaderfeatures.h
index 10418c7f81..30bf9e6851 100644
--- a/src/plugins/effectcomposer/shaderfeatures.h
+++ b/src/plugins/effectcomposer/shaderfeatures.h
@@ -19,7 +19,8 @@ public:
Mouse = 1 << 4,
FragCoord = 1 << 5,
GridMesh = 1 << 6,
- BlurSources = 1 << 7
+ BlurSources = 1 << 7,
+ Mipmap = 1 << 8
};
Q_DECLARE_FLAGS(Features, Feature)