summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/util
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2017-07-12 14:03:08 +0200
committerSean Harmer <sean.harmer@kdab.com>2017-08-02 17:34:35 +0000
commitdd04551504d8687a9795a52de28380efbc5a091c (patch)
tree929673ee843bc8b096b9e213dde03ae44e8ca30c /tests/auto/gui/util
parent50775424beb886e1fa0c32982a46642a8e1fa888 (diff)
Extend the parameter support in QShaderGraphLoader for richer types
In particular, go through QMetaType/QMetaEnum to deal with enums. Change-Id: I2e847ba328eb46609b86b3dfd6c4dbf532d78b7d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/gui/util')
-rw-r--r--tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp41
1 files changed, 28 insertions, 13 deletions
diff --git a/tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp b/tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp
index 38828e3a9b..4fec89117e 100644
--- a/tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp
+++ b/tests/auto/gui/util/qshadergraphloader/tst_qshadergraphloader.cpp
@@ -32,6 +32,7 @@
#include <QtCore/qbuffer.h>
#include <QtGui/private/qshadergraphloader_p.h>
+#include <QtGui/private/qshaderlanguage_p.h>
using QBufferPointer = QSharedPointer<QBuffer>;
Q_DECLARE_METATYPE(QBufferPointer);
@@ -98,10 +99,12 @@ namespace
});
worldPosition.setUuid(QUuid("{00000000-0000-0000-0000-000000000001}"));
worldPosition.setParameter("name", "worldPosition");
- worldPosition.addRule(openGLES2, QShaderNode::Rule("highp vec3 $value = $name;",
- QByteArrayList() << "varying highp vec3 $name;"));
- worldPosition.addRule(openGL3, QShaderNode::Rule("vec3 $value = $name;",
- QByteArrayList() << "in vec3 $name;"));
+ worldPosition.setParameter("qualifier", QVariant::fromValue<QShaderLanguage::StorageQualifier>(QShaderLanguage::Input));
+ worldPosition.setParameter("type", QVariant::fromValue<QShaderLanguage::VariableType>(QShaderLanguage::Vec3));
+ worldPosition.addRule(openGLES2, QShaderNode::Rule("highp $type $value = $name;",
+ QByteArrayList() << "$qualifier highp $type $name;"));
+ worldPosition.addRule(openGL3, QShaderNode::Rule("$type $value = $name;",
+ QByteArrayList() << "$qualifier $type $name;"));
auto texture = createNode({
createPort(QShaderNodePort::Output, "texture")
@@ -126,10 +129,12 @@ namespace
});
lightIntensity.setUuid(QUuid("{00000000-0000-0000-0000-000000000004}"));
lightIntensity.setParameter("name", "defaultName");
- lightIntensity.addRule(openGLES2, QShaderNode::Rule("highp vec3 $value = $name;",
- QByteArrayList() << "varying highp vec3 $name;"));
- lightIntensity.addRule(openGL3, QShaderNode::Rule("vec3 $value = $name;",
- QByteArrayList() << "in vec3 $name;"));
+ lightIntensity.setParameter("qualifier", QVariant::fromValue<QShaderLanguage::StorageQualifier>(QShaderLanguage::Uniform));
+ lightIntensity.setParameter("type", QVariant::fromValue<QShaderLanguage::VariableType>(QShaderLanguage::Float));
+ lightIntensity.addRule(openGLES2, QShaderNode::Rule("highp $type $value = $name;",
+ QByteArrayList() << "$qualifier highp $type $name;"));
+ lightIntensity.addRule(openGL3, QShaderNode::Rule("$type $value = $name;",
+ QByteArrayList() << "$qualifier $type $name;"));
auto exposure = createNode({
createPort(QShaderNodePort::Output, "exposure")
@@ -377,7 +382,15 @@ void tst_QShaderGraphLoader::shouldLoadFromJsonStream_data()
" \"uuid\": \"{00000000-0000-0000-0000-000000000001}\","
" \"type\": \"inputValue\","
" \"parameters\": {"
- " \"name\": \"worldPosition\""
+ " \"name\": \"worldPosition\","
+ " \"qualifier\": {"
+ " \"type\": \"QShaderLanguage::StorageQualifier\","
+ " \"value\": \"QShaderLanguage::Input\""
+ " },"
+ " \"type\": {"
+ " \"type\": \"QShaderLanguage::VariableType\","
+ " \"value\": \"QShaderLanguage::Vec3\""
+ " }"
" }"
" },"
" {"
@@ -475,10 +488,12 @@ void tst_QShaderGraphLoader::shouldLoadFromJsonStream_data()
createPort(QShaderNodePort::Output, "value")
});
inputValue.setParameter("name", "defaultName");
- inputValue.addRule(openGLES2, QShaderNode::Rule("highp vec3 $value = $name;",
- QByteArrayList() << "varying highp vec3 $name;"));
- inputValue.addRule(openGL3, QShaderNode::Rule("vec3 $value = $name;",
- QByteArrayList() << "in vec3 $name;"));
+ inputValue.setParameter("qualifier", QVariant::fromValue<QShaderLanguage::StorageQualifier>(QShaderLanguage::Uniform));
+ inputValue.setParameter("type", QVariant::fromValue<QShaderLanguage::VariableType>(QShaderLanguage::Float));
+ inputValue.addRule(openGLES2, QShaderNode::Rule("highp $type $value = $name;",
+ QByteArrayList() << "$qualifier highp $type $name;"));
+ inputValue.addRule(openGL3, QShaderNode::Rule("$type $value = $name;",
+ QByteArrayList() << "$qualifier $type $name;"));
protos.insert("inputValue", inputValue);
auto texture = createNode({