summaryrefslogtreecommitdiffstats
path: root/tests/auto/render
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-10-01 03:00:42 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-10-01 03:00:42 +0200
commit73bfd21fcbe9f7f647edcbe19b7153ac4cc5c859 (patch)
treee814e94894d6974d93ac30eca21cbecf105d4ad9 /tests/auto/render
parent9ba07868d3ddedd2e39f9612118674cefd5fe1bf (diff)
parent621c19719e51d0b4c94a51f802f8a2128e201b85 (diff)
Merge remote-tracking branch 'origin/5.14' into 5.15
Diffstat (limited to 'tests/auto/render')
-rw-r--r--tests/auto/render/computecommand/tst_computecommand.cpp44
-rw-r--r--tests/auto/render/filterkey/tst_filterkey.cpp44
-rw-r--r--tests/auto/render/levelofdetail/tst_levelofdetail.cpp38
-rw-r--r--tests/auto/render/objectpicker/tst_objectpicker.cpp33
-rw-r--r--tests/auto/render/qcomputecommand/tst_qcomputecommand.cpp25
-rw-r--r--tests/auto/render/qrenderstate/tst_qrenderstate.cpp20
-rw-r--r--tests/auto/render/qrendertarget/tst_qrendertarget.cpp20
-rw-r--r--tests/auto/render/raycaster/tst_raycaster.cpp16
-rw-r--r--tests/auto/render/renderer/tst_renderer.cpp39
-rw-r--r--tests/auto/render/renderpass/tst_renderpass.cpp2
-rw-r--r--tests/auto/render/rendertarget/tst_rendertarget.cpp30
-rw-r--r--tests/auto/render/sceneloader/tst_sceneloader.cpp36
-rw-r--r--tests/auto/render/shader/tst_shader.cpp52
-rw-r--r--tests/auto/render/shaderbuilder/tst_shaderbuilder.cpp162
-rw-r--r--tests/auto/render/shaderimage/tst_shaderimage.cpp56
-rw-r--r--tests/auto/render/technique/tst_technique.cpp17
-rw-r--r--tests/auto/render/textures/tst_textures.cpp147
17 files changed, 374 insertions, 407 deletions
diff --git a/tests/auto/render/computecommand/tst_computecommand.cpp b/tests/auto/render/computecommand/tst_computecommand.cpp
index a82c3eeaf..990c0cd98 100644
--- a/tests/auto/render/computecommand/tst_computecommand.cpp
+++ b/tests/auto/render/computecommand/tst_computecommand.cpp
@@ -87,7 +87,7 @@ private Q_SLOTS:
// WHEN
Qt3DRender::Render::ComputeCommand backendComputeCommand;
backendComputeCommand.setRenderer(&renderer);
- simulateInitialization(&computeCommand, &backendComputeCommand);
+ simulateInitializationSync(&computeCommand, &backendComputeCommand);
// THEN
QCOMPARE(backendComputeCommand.isEnabled(), true);
@@ -105,7 +105,7 @@ private Q_SLOTS:
Qt3DRender::Render::ComputeCommand backendComputeCommand;
backendComputeCommand.setRenderer(&renderer);
computeCommand.setEnabled(false);
- simulateInitialization(&computeCommand, &backendComputeCommand);
+ simulateInitializationSync(&computeCommand, &backendComputeCommand);
// THEN
QCOMPARE(backendComputeCommand.peerId(), computeCommand.id());
@@ -118,16 +118,16 @@ private Q_SLOTS:
{
// GIVEN
Qt3DRender::Render::ComputeCommand backendComputeCommand;
+ Qt3DRender::QComputeCommand computeCommand;
TestRenderer renderer;
backendComputeCommand.setRenderer(&renderer);
+ simulateInitializationSync(&computeCommand, &backendComputeCommand);
{
// WHEN
const bool newValue = false;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("enabled");
- change->setValue(newValue);
- backendComputeCommand.sceneChangeEvent(change);
+ computeCommand.setEnabled(newValue);
+ backendComputeCommand.syncFromFrontEnd(&computeCommand, false);
// THEN
QCOMPARE(backendComputeCommand.isEnabled(), newValue);
@@ -135,10 +135,8 @@ private Q_SLOTS:
{
// WHEN
const int newValue = 128;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("workGroupX");
- change->setValue(newValue);
- backendComputeCommand.sceneChangeEvent(change);
+ computeCommand.setWorkGroupX(newValue);
+ backendComputeCommand.syncFromFrontEnd(&computeCommand, false);
// THEN
QCOMPARE(backendComputeCommand.x(), newValue);
@@ -146,10 +144,8 @@ private Q_SLOTS:
{
// WHEN
const int newValue = 64;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("workGroupY");
- change->setValue(newValue);
- backendComputeCommand.sceneChangeEvent(change);
+ computeCommand.setWorkGroupY(newValue);
+ backendComputeCommand.syncFromFrontEnd(&computeCommand, false);
// THEN
QCOMPARE(backendComputeCommand.y(), newValue);
@@ -157,10 +153,8 @@ private Q_SLOTS:
{
// WHEN
const int newValue = 32;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("workGroupZ");
- change->setValue(newValue);
- backendComputeCommand.sceneChangeEvent(change);
+ computeCommand.setWorkGroupZ(newValue);
+ backendComputeCommand.syncFromFrontEnd(&computeCommand, false);
// THEN
QCOMPARE(backendComputeCommand.z(), newValue);
@@ -168,10 +162,8 @@ private Q_SLOTS:
{
// WHEN
const Qt3DRender::QComputeCommand::RunType newValue = Qt3DRender::QComputeCommand::Manual;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("runType");
- change->setValue(newValue);
- backendComputeCommand.sceneChangeEvent(change);
+ computeCommand.setRunType(newValue);
+ backendComputeCommand.syncFromFrontEnd(&computeCommand, false);
// THEN
QCOMPARE(backendComputeCommand.runType(), newValue);
@@ -179,10 +171,8 @@ private Q_SLOTS:
{
// WHEN
const int newValue = 32;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("frameCount");
- change->setValue(newValue);
- backendComputeCommand.sceneChangeEvent(change);
+ computeCommand.trigger(newValue);
+ backendComputeCommand.syncFromFrontEnd(&computeCommand, false);
// THEN
QCOMPARE(backendComputeCommand.frameCount(), newValue);
@@ -208,7 +198,7 @@ private Q_SLOTS:
Qt3DCore::QBackendNodePrivate::get(&backendComputeCommand)->setArbiter(&arbiter);
backendComputeCommand.setRenderer(&renderer);
- simulateInitialization(&computeCommand, &backendComputeCommand);
+ simulateInitializationSync(&computeCommand, &backendComputeCommand);
for (int i = 0; i < 5; ++i) {
// WHEN
diff --git a/tests/auto/render/filterkey/tst_filterkey.cpp b/tests/auto/render/filterkey/tst_filterkey.cpp
index 15d07d65f..c998cc603 100644
--- a/tests/auto/render/filterkey/tst_filterkey.cpp
+++ b/tests/auto/render/filterkey/tst_filterkey.cpp
@@ -56,16 +56,18 @@ private Q_SLOTS:
void checkCleanupState()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::FilterKey backendFilterKey;
// WHEN
+ backendFilterKey.setRenderer(&renderer);
backendFilterKey.setEnabled(true);
{
Qt3DRender::QFilterKey filterKey;
filterKey.setName(QStringLiteral("Tim"));
filterKey.setValue(QVariant(QStringLiteral("McGraw")));
- simulateInitialization(&filterKey, &backendFilterKey);
+ simulateInitializationSync(&filterKey, &backendFilterKey);
}
backendFilterKey.cleanup();
@@ -79,6 +81,7 @@ private Q_SLOTS:
void checkInitializeFromPeer()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::QFilterKey filterKey;
filterKey.setName(QStringLiteral("Dallas"));
filterKey.setValue(QVariant(QStringLiteral("Smith")));
@@ -86,7 +89,8 @@ private Q_SLOTS:
{
// WHEN
Qt3DRender::Render::FilterKey backendFilterKey;
- simulateInitialization(&filterKey, &backendFilterKey);
+ backendFilterKey.setRenderer(&renderer);
+ simulateInitializationSync(&filterKey, &backendFilterKey);
// THEN
QCOMPARE(backendFilterKey.isEnabled(), true);
@@ -97,8 +101,9 @@ private Q_SLOTS:
{
// WHEN
Qt3DRender::Render::FilterKey backendFilterKey;
+ backendFilterKey.setRenderer(&renderer);
filterKey.setEnabled(false);
- simulateInitialization(&filterKey, &backendFilterKey);
+ simulateInitializationSync(&filterKey, &backendFilterKey);
// THEN
QCOMPARE(backendFilterKey.peerId(), filterKey.id());
@@ -110,16 +115,16 @@ private Q_SLOTS:
{
// GIVEN
Qt3DRender::Render::FilterKey backendFilterKey;
+ Qt3DRender::QFilterKey frontend;
TestRenderer renderer;
backendFilterKey.setRenderer(&renderer);
+ simulateInitializationSync(&frontend, &backendFilterKey);
{
// WHEN
const bool newValue = false;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("enabled");
- change->setValue(newValue);
- backendFilterKey.sceneChangeEvent(change);
+ frontend.setEnabled(newValue);
+ backendFilterKey.syncFromFrontEnd(&frontend, false);
// THEN
QCOMPARE(backendFilterKey.isEnabled(), newValue);
@@ -127,10 +132,8 @@ private Q_SLOTS:
{
// WHEN
const QVariant newValue(383.0f);
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("value");
- change->setValue(QVariant::fromValue(newValue));
- backendFilterKey.sceneChangeEvent(change);
+ frontend.setValue(newValue);
+ backendFilterKey.syncFromFrontEnd(&frontend, false);
// THEN
QCOMPARE(backendFilterKey.value(), newValue);
@@ -138,10 +141,8 @@ private Q_SLOTS:
{
// WHEN
const QString newValue = QStringLiteral("Alan");
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("name");
- change->setValue(QVariant::fromValue(newValue));
- backendFilterKey.sceneChangeEvent(change);
+ frontend.setName(newValue);
+ backendFilterKey.syncFromFrontEnd(&frontend, false);
// THEN
QCOMPARE(backendFilterKey.name(), newValue);
@@ -151,10 +152,15 @@ private Q_SLOTS:
void checkComparison()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::FilterKey backendFilterKey1;
Qt3DRender::Render::FilterKey backendFilterKey2;
Qt3DRender::Render::FilterKey backendFilterKey3;
Qt3DRender::Render::FilterKey backendFilterKey4;
+ backendFilterKey1.setRenderer(&renderer);
+ backendFilterKey2.setRenderer(&renderer);
+ backendFilterKey3.setRenderer(&renderer);
+ backendFilterKey4.setRenderer(&renderer);
// WHEN
{
@@ -162,20 +168,20 @@ private Q_SLOTS:
filterKey1.setName(QStringLiteral("Dallas"));
filterKey1.setValue(QVariant(QStringLiteral("Smith")));
- simulateInitialization(&filterKey1, &backendFilterKey1);
- simulateInitialization(&filterKey1, &backendFilterKey4);
+ simulateInitializationSync(&filterKey1, &backendFilterKey1);
+ simulateInitializationSync(&filterKey1, &backendFilterKey4);
Qt3DRender::QFilterKey filterKey2;
filterKey2.setName(QStringLiteral("Tim"));
filterKey2.setValue(QVariant(QStringLiteral("Smith")));
- simulateInitialization(&filterKey2, &backendFilterKey2);
+ simulateInitializationSync(&filterKey2, &backendFilterKey2);
Qt3DRender::QFilterKey filterKey3;
filterKey3.setName(QStringLiteral("Dallas"));
filterKey3.setValue(QVariant(QStringLiteral("McGraw")));
- simulateInitialization(&filterKey3, &backendFilterKey3);
+ simulateInitializationSync(&filterKey3, &backendFilterKey3);
}
// THEN
diff --git a/tests/auto/render/levelofdetail/tst_levelofdetail.cpp b/tests/auto/render/levelofdetail/tst_levelofdetail.cpp
index 148c54e58..2285cc5ff 100644
--- a/tests/auto/render/levelofdetail/tst_levelofdetail.cpp
+++ b/tests/auto/render/levelofdetail/tst_levelofdetail.cpp
@@ -45,11 +45,13 @@ private Q_SLOTS:
void checkPeerPropertyMirroring()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::LevelOfDetail renderLod;
Qt3DRender::QLevelOfDetail lod;
// WHEN
- simulateInitialization(&lod, &renderLod);
+ renderLod.setRenderer(&renderer);
+ simulateInitializationSync(&lod, &renderLod);
// THEN
QCOMPARE(renderLod.peerId(), lod.id());
@@ -82,7 +84,7 @@ private Q_SLOTS:
// WHEN
renderLod.setRenderer(&renderer);
- simulateInitialization(&lod, &renderLod);
+ simulateInitializationSync(&lod, &renderLod);
// THEN
QCOMPARE(renderLod.thresholdType(), lod.thresholdType());
@@ -92,8 +94,10 @@ private Q_SLOTS:
{
// GIVEN
TestRenderer renderer;
+ Qt3DRender::QLevelOfDetail lod;
Qt3DRender::Render::LevelOfDetail renderLod;
renderLod.setRenderer(&renderer);
+ simulateInitializationSync(&lod, &renderLod);
// THEN
QVERIFY(renderLod.thresholdType() != Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold);
@@ -101,38 +105,30 @@ private Q_SLOTS:
{
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
- updateChange->setValue(static_cast<int>(Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold));
- updateChange->setPropertyName("thresholdType");
- renderLod.sceneChangeEvent(updateChange);
+ lod.setThresholdType(Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold);
+ renderLod.syncFromFrontEnd(&lod, false);
// THEN
QCOMPARE(renderLod.thresholdType(), Qt3DRender::QLevelOfDetail::ProjectedScreenPixelSizeThreshold);
- QVERIFY(renderer.dirtyBits() != 0);
- }
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::GeometryDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty); }
{
- QVector<qreal> thresholds = {20.f, 30.f, 40.f};
- QVariant v;
- v.setValue<decltype(thresholds)>(thresholds);
+ const QVector<qreal> thresholds = {20.f, 30.f, 40.f};
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
- updateChange->setValue(v);
- updateChange->setPropertyName("thresholds");
- renderLod.sceneChangeEvent(updateChange);
-
+ lod.setThresholds(thresholds);
+ renderLod.syncFromFrontEnd(&lod, false);
// THEN
QCOMPARE(renderLod.thresholds(), thresholds);
}
{
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
- Qt3DRender::QLevelOfDetailBoundingSphere sphere(QVector3D(1.0f, 2.0f, 3.0f), 1.0f);
- updateChange->setValue(QVariant::fromValue(sphere));
- updateChange->setPropertyName("volumeOverride");
- renderLod.sceneChangeEvent(updateChange);
+ const Qt3DRender::QLevelOfDetailBoundingSphere sphere(QVector3D(1.0f, 2.0f, 3.0f), 1.0f);
+ // WHEN
+ lod.setVolumeOverride(sphere);
+ renderLod.syncFromFrontEnd(&lod, false);
// THEN
QCOMPARE(renderLod.center(), QVector3D(1., 2., 3.));
diff --git a/tests/auto/render/objectpicker/tst_objectpicker.cpp b/tests/auto/render/objectpicker/tst_objectpicker.cpp
index 99b2af538..a8d9bd010 100644
--- a/tests/auto/render/objectpicker/tst_objectpicker.cpp
+++ b/tests/auto/render/objectpicker/tst_objectpicker.cpp
@@ -44,13 +44,15 @@ private Q_SLOTS:
void checkPeerPropertyMirroring()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::ObjectPicker objectPicker;
Qt3DRender::QObjectPicker picker;
picker.setHoverEnabled(true);
picker.setPriority(883);
// WHEN
- simulateInitialization(&picker, &objectPicker);
+ objectPicker.setRenderer(&renderer);
+ simulateInitializationSync(&picker, &objectPicker);
// THEN
QVERIFY(!objectPicker.peerId().isNull());
@@ -61,6 +63,7 @@ private Q_SLOTS:
void checkInitialAndCleanedUpState()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::ObjectPicker objectPicker;
// THEN
@@ -76,7 +79,8 @@ private Q_SLOTS:
picker.setPriority(1584);
// WHEN
- simulateInitialization(&picker, &objectPicker);
+ objectPicker.setRenderer(&renderer);
+ simulateInitializationSync(&picker, &objectPicker);
objectPicker.cleanup();
// THEN
@@ -90,42 +94,43 @@ private Q_SLOTS:
// GIVEN
TestRenderer renderer;
{
+ Qt3DRender::QObjectPicker picker;
Qt3DRender::Render::ObjectPicker objectPicker;
objectPicker.setRenderer(&renderer);
+ simulateInitializationSync(&picker, &objectPicker);
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
- updateChange->setValue(true);
- updateChange->setPropertyName("hoverEnabled");
- objectPicker.sceneChangeEvent(updateChange);
+ picker.setHoverEnabled(true);
+ objectPicker.syncFromFrontEnd(&picker, false);
// THEN
QCOMPARE(objectPicker.isHoverEnabled(), true);
QVERIFY(renderer.dirtyBits() != 0);
}
{
+ Qt3DRender::QObjectPicker picker;
Qt3DRender::Render::ObjectPicker objectPicker;
objectPicker.setRenderer(&renderer);
+ simulateInitializationSync(&picker, &objectPicker);
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
- updateChange->setValue(true);
- updateChange->setPropertyName("dragEnabled");
- objectPicker.sceneChangeEvent(updateChange);
+ picker.setDragEnabled(true);
+ objectPicker.syncFromFrontEnd(&picker, false);
+
// THEN
QCOMPARE(objectPicker.isDragEnabled(), true);
QVERIFY(renderer.dirtyBits() != 0);
}
{
+ Qt3DRender::QObjectPicker picker;
Qt3DRender::Render::ObjectPicker objectPicker;
objectPicker.setRenderer(&renderer);
+ simulateInitializationSync(&picker, &objectPicker);
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
- updateChange->setValue(15);
- updateChange->setPropertyName("priority");
- objectPicker.sceneChangeEvent(updateChange);
+ picker.setPriority(15);
+ objectPicker.syncFromFrontEnd(&picker, false);
// THEN
QCOMPARE(objectPicker.priority(), 15);
diff --git a/tests/auto/render/qcomputecommand/tst_qcomputecommand.cpp b/tests/auto/render/qcomputecommand/tst_qcomputecommand.cpp
index b46cc4ea0..4494e773b 100644
--- a/tests/auto/render/qcomputecommand/tst_qcomputecommand.cpp
+++ b/tests/auto/render/qcomputecommand/tst_qcomputecommand.cpp
@@ -342,13 +342,7 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// THEN
- QCOMPARE(arbiter.events.size(), 1);
- {
- auto change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
- QCOMPARE(change->propertyName(), "frameCount");
- QCOMPARE(change->value().value<int>(), 1);
- QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- }
+ QCOMPARE(arbiter.events.size(), 0);
QCOMPARE(arbiter.dirtyNodes.size(), 1);
QCOMPARE(arbiter.dirtyNodes.front(), &computeCommand);
QCOMPARE(computeCommand.isEnabled(), true);
@@ -356,7 +350,6 @@ private Q_SLOTS:
computeCommand.setEnabled(false);
QCoreApplication::processEvents();
arbiter.dirtyNodes.clear();
- arbiter.events.clear();
}
{
@@ -365,13 +358,7 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// THEN
- QCOMPARE(arbiter.events.size(), 1);
- {
- auto change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
- QCOMPARE(change->propertyName(), "frameCount");
- QCOMPARE(change->value().value<int>(), 2);
- QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- }
+ QCOMPARE(arbiter.events.size(), 0);
QCOMPARE(arbiter.dirtyNodes.size(), 1);
QCOMPARE(arbiter.dirtyNodes.front(), &computeCommand);
QCOMPARE(computeCommand.isEnabled(), true);
@@ -388,13 +375,7 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// THEN
- QCOMPARE(arbiter.events.size(), 1);
- {
- auto change = arbiter.events.at(0).staticCast<Qt3DCore::QPropertyUpdatedChange>();
- QCOMPARE(change->propertyName(), "frameCount");
- QCOMPARE(change->value().value<int>(), 1);
- QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- }
+ QCOMPARE(arbiter.events.size(), 0);
QCOMPARE(arbiter.dirtyNodes.size(), 1);
QCOMPARE(arbiter.dirtyNodes.front(), &computeCommand);
QCOMPARE(computeCommand.isEnabled(), true);
diff --git a/tests/auto/render/qrenderstate/tst_qrenderstate.cpp b/tests/auto/render/qrenderstate/tst_qrenderstate.cpp
index 63319b42c..fb212bc8f 100644
--- a/tests/auto/render/qrenderstate/tst_qrenderstate.cpp
+++ b/tests/auto/render/qrenderstate/tst_qrenderstate.cpp
@@ -75,8 +75,8 @@ private:
RenderStateNode* createBackendNode(QRenderState *frontend)
{
RenderStateNode *backend = m_renderStateManager.getOrCreateResource(frontend->id());
- simulateInitialization(frontend, backend);
backend->setRenderer(&m_renderer);
+ simulateInitializationSync(frontend, backend);
return backend;
}
@@ -187,6 +187,7 @@ private Q_SLOTS:
// THEN
RenderStateNode *backend1 = createBackendNode(frontend1);
RenderStateNode *backend2 = createBackendNode(frontend2);
+
QVERIFY(backend1->type() == mask);
QVERIFY(backend2->type() == mask);
QVERIFY(backend1->impl() != backend2->impl());
@@ -204,12 +205,11 @@ private Q_SLOTS:
QCOMPARE(arbiter.dirtyNodes.size(), 1);
QCOMPARE(arbiter.dirtyNodes.front(), frontend1);
- // TODOSYNC update when syncFromFrontendNode is implemented
-// // WHEN
-// backend1->sceneChangeEvent(change.staticCast<QSceneChange>());
+ // WHEN
+ backend1->syncFromFrontEnd(frontend1, false);
-// // THEN
-// QVERIFY(backend1->impl() == backend2->impl());
+ // THEN
+ QVERIFY(backend1->impl() == backend2->impl());
arbiter.dirtyNodes.clear();
}
@@ -285,12 +285,12 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// THEN
- QCOMPARE(arbiter.events.size(), 1);
- QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<QPropertyUpdatedChange>();
- QCOMPARE(change->subjectId(), frontend1->id());
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(arbiter.dirtyNodes.size(), 1);
+ QCOMPARE(arbiter.dirtyNodes.front(), frontend1);
// WHEN
- backend1->sceneChangeEvent(change.staticCast<QSceneChange>());
+ backend1->syncFromFrontEnd(frontend1, false);
// THEN
QVERIFY(backend1->impl() == backend2->impl());
diff --git a/tests/auto/render/qrendertarget/tst_qrendertarget.cpp b/tests/auto/render/qrendertarget/tst_qrendertarget.cpp
index 03a9e5f94..ffb17faea 100644
--- a/tests/auto/render/qrendertarget/tst_qrendertarget.cpp
+++ b/tests/auto/render/qrendertarget/tst_qrendertarget.cpp
@@ -167,13 +167,11 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// THEN
- QCOMPARE(arbiter.events.size(), 1);
- auto change = arbiter.events.first().staticCast<Qt3DCore::QPropertyNodeAddedChange>();
- QCOMPARE(change->propertyName(), "output");
- QCOMPARE(change->addedNodeId(), renderTargetOutput.id());
- QCOMPARE(change->type(), Qt3DCore::PropertyValueAdded);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(arbiter.dirtyNodes.size(), 1);
+ QCOMPARE(arbiter.dirtyNodes.front(), &renderTarget);
- arbiter.events.clear();
+ arbiter.dirtyNodes.clear();
}
{
@@ -182,13 +180,11 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// THEN
- QCOMPARE(arbiter.events.size(), 1);
- auto change = arbiter.events.first().staticCast<Qt3DCore::QPropertyNodeRemovedChange>();
- QCOMPARE(change->propertyName(), "output");
- QCOMPARE(change->removedNodeId(), renderTargetOutput.id());
- QCOMPARE(change->type(), Qt3DCore::PropertyValueRemoved);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(arbiter.dirtyNodes.size(), 1);
+ QCOMPARE(arbiter.dirtyNodes.front(), &renderTarget);
- arbiter.events.clear();
+ arbiter.dirtyNodes.clear();
}
}
};
diff --git a/tests/auto/render/raycaster/tst_raycaster.cpp b/tests/auto/render/raycaster/tst_raycaster.cpp
index 4d30c6d45..357517f0d 100644
--- a/tests/auto/render/raycaster/tst_raycaster.cpp
+++ b/tests/auto/render/raycaster/tst_raycaster.cpp
@@ -44,6 +44,7 @@ private Q_SLOTS:
void checkPeerPropertyMirroring()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::RayCaster rayCaster;
Qt3DRender::QRayCaster caster;
caster.setRunMode(Qt3DRender::QRayCaster::Continuous);
@@ -52,7 +53,8 @@ private Q_SLOTS:
caster.setLength(42.f);
// WHEN
- simulateInitialization(&caster, &rayCaster);
+ rayCaster.setRenderer(&renderer);
+ simulateInitializationSync(&caster, &rayCaster);
// THEN
QVERIFY(!rayCaster.peerId().isNull());
@@ -65,6 +67,7 @@ private Q_SLOTS:
void checkInitialAndCleanedUpState()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::RayCaster rayCaster;
// THEN
@@ -76,7 +79,8 @@ private Q_SLOTS:
caster.setRunMode(Qt3DRender::QRayCaster::Continuous);
// WHEN
- simulateInitialization(&caster, &rayCaster);
+ rayCaster.setRenderer(&renderer);
+ simulateInitializationSync(&caster, &rayCaster);
rayCaster.cleanup();
// THEN
@@ -88,14 +92,14 @@ private Q_SLOTS:
// GIVEN
TestRenderer renderer;
{
+ Qt3DRender::QRayCaster caster;
Qt3DRender::Render::RayCaster rayCaster;
rayCaster.setRenderer(&renderer);
+ simulateInitializationSync(&caster, &rayCaster);
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
- updateChange->setValue(Qt3DRender::QRayCaster::Continuous);
- updateChange->setPropertyName("runMode");
- rayCaster.sceneChangeEvent(updateChange);
+ caster.setRunMode(Qt3DRender::QRayCaster::Continuous);
+ rayCaster.syncFromFrontEnd(&caster, false);
// THEN
QCOMPARE(rayCaster.runMode(), Qt3DRender::QRayCaster::Continuous);
diff --git a/tests/auto/render/renderer/tst_renderer.cpp b/tests/auto/render/renderer/tst_renderer.cpp
index 973192d6a..e1bf8dfd9 100644
--- a/tests/auto/render/renderer/tst_renderer.cpp
+++ b/tests/auto/render/renderer/tst_renderer.cpp
@@ -36,6 +36,7 @@
#include <Qt3DRender/private/renderviewbuilder_p.h>
#include <Qt3DRender/private/offscreensurfacehelper_p.h>
#include <Qt3DRender/private/renderqueue_p.h>
+#include <Qt3DRender/private/job_common_p.h>
class tst_Renderer : public QObject
{
@@ -170,9 +171,24 @@ private Q_SLOTS:
// syncRenderViewCommandBuilderJob
// n * (RenderViewCommandBuildJobs)
- // WHEN (nothing dirty, no buffers, no layers to be rebuilt, no materials to be rebuilt)
+ // WHEN
QVector<Qt3DCore::QAspectJobPtr> jobs = renderer.renderBinJobs();
+ // THEN
+ QCOMPARE(jobs.size(),
+ 1 + // updateLevelOfDetailJob
+ 1 + // cleanupJob
+ 1 + // VAOGatherer
+ 1 + // updateSkinningPaletteJob
+ 1); // SyncLoadingJobs
+
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ renderQueue->reset();
+
+ // WHEN (nothing dirty, no buffers, no layers to be rebuilt, no materials to be rebuilt)
+ renderer.markDirty(Qt3DRender::Render::AbstractRenderer::FrameGraphDirty, nullptr);
+ jobs = renderer.renderBinJobs();
+
// THEN (level
QCOMPARE(jobs.size(),
1 + // updateLevelOfDetailJob
@@ -180,7 +196,9 @@ private Q_SLOTS:
1 + // VAOGatherer
1 + // updateSkinningPaletteJob
1 + // SyncLoadingJobs
- singleRenderViewJobCount); // Only valid for the first call to renderBinJobs(), since subsequent calls won't have the renderqueue reset
+ singleRenderViewJobCount +
+ renderViewBuilderMaterialCacheJobCount +
+ layerCacheJobCount);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
renderQueue->reset();
@@ -298,23 +316,6 @@ private Q_SLOTS:
renderQueue->reset();
// WHEN
- renderer.markDirty(Qt3DRender::Render::AbstractRenderer::FrameGraphDirty, nullptr);
- jobs = renderer.renderBinJobs();
-
- QCOMPARE(jobs.size(),
- 1 + // updateLevelOfDetailJob
- 1 + // cleanupJob
- 1 + // VAOGatherer
- 1 + // updateSkinningPaletteJob
- 1 + // SyncLoadingJobs
- singleRenderViewJobCount +
- layerCacheJobCount +
- renderViewBuilderMaterialCacheJobCount);
-
- renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
- renderQueue->reset();
-
- // WHEN
renderer.markDirty(Qt3DRender::Render::AbstractRenderer::AllDirty, nullptr);
jobs = renderer.renderBinJobs();
diff --git a/tests/auto/render/renderpass/tst_renderpass.cpp b/tests/auto/render/renderpass/tst_renderpass.cpp
index 7be741936..136e2755d 100644
--- a/tests/auto/render/renderpass/tst_renderpass.cpp
+++ b/tests/auto/render/renderpass/tst_renderpass.cpp
@@ -148,6 +148,7 @@ private slots:
backend.setRenderer(&renderer);
RenderStateNode *backendState = m_renderStateManager->getOrCreateResource(frontendState->id());
+ backendState->setRenderer(&renderer);
simulateInitializationSync(frontendState, backendState);
// WHEN
@@ -262,6 +263,7 @@ private slots:
backend.setRenderer(&renderer);
RenderStateNode *backendState = m_renderStateManager->getOrCreateResource(frontendState->id());
+ backendState->setRenderer(&renderer);
simulateInitializationSync(frontendState, backendState);
QRenderPass frontend;
diff --git a/tests/auto/render/rendertarget/tst_rendertarget.cpp b/tests/auto/render/rendertarget/tst_rendertarget.cpp
index a5d8cad77..cd7b0978a 100644
--- a/tests/auto/render/rendertarget/tst_rendertarget.cpp
+++ b/tests/auto/render/rendertarget/tst_rendertarget.cpp
@@ -75,6 +75,7 @@ private Q_SLOTS:
void checkInitializeFromPeer()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::QRenderTarget renderTarget;
Qt3DRender::QRenderTargetOutput renderTargetOuput;
renderTarget.addOutput(&renderTargetOuput);
@@ -82,8 +83,8 @@ private Q_SLOTS:
{
// WHEN
Qt3DRender::Render::RenderTarget backendRenderTarget;
- simulateInitialization(&renderTarget, &backendRenderTarget);
-
+ backendRenderTarget.setRenderer(&renderer);
+ simulateInitializationSync(&renderTarget, &backendRenderTarget);
// THEN
QCOMPARE(backendRenderTarget.isEnabled(), true);
QCOMPARE(backendRenderTarget.peerId(), renderTarget.id());
@@ -93,7 +94,8 @@ private Q_SLOTS:
// WHEN
Qt3DRender::Render::RenderTarget backendRenderTarget;
renderTarget.setEnabled(false);
- simulateInitialization(&renderTarget, &backendRenderTarget);
+ backendRenderTarget.setRenderer(&renderer);
+ simulateInitializationSync(&renderTarget, &backendRenderTarget);
// THEN
QCOMPARE(backendRenderTarget.peerId(), renderTarget.id());
@@ -168,17 +170,17 @@ private Q_SLOTS:
void checkSceneChangeEvents()
{
// GIVEN
+ Qt3DRender::QRenderTarget renderTarget;
Qt3DRender::Render::RenderTarget backendRenderTarget;
TestRenderer renderer;
backendRenderTarget.setRenderer(&renderer);
+ simulateInitializationSync(&renderTarget, &backendRenderTarget);
{
// WHEN
const bool newValue = false;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("enabled");
- change->setValue(newValue);
- backendRenderTarget.sceneChangeEvent(change);
+ renderTarget.setEnabled(newValue);
+ backendRenderTarget.syncFromFrontEnd(&renderTarget, false);
// THEN
QCOMPARE(backendRenderTarget.isEnabled(), newValue);
@@ -186,21 +188,23 @@ private Q_SLOTS:
{
// WHEN
Qt3DRender::QRenderTargetOutput targetOutput;
- const auto addChange = Qt3DCore::QPropertyNodeAddedChangePtr::create(Qt3DCore::QNodeId(), &targetOutput);
- addChange->setPropertyName("output");
- backendRenderTarget.sceneChangeEvent(addChange);
+ renderTarget.addOutput(&targetOutput);
+ backendRenderTarget.syncFromFrontEnd(&renderTarget, false);
// THEN
QCOMPARE(backendRenderTarget.renderOutputs().size(), 1);
QCOMPARE(backendRenderTarget.renderOutputs().first(), targetOutput.id());
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::AllDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
// WHEN
- const auto removeChange = Qt3DCore::QPropertyNodeRemovedChangePtr::create(Qt3DCore::QNodeId(), &targetOutput);
- removeChange->setPropertyName("output");
- backendRenderTarget.sceneChangeEvent(removeChange);
+ renderTarget.removeOutput(&targetOutput);
+ backendRenderTarget.syncFromFrontEnd(&renderTarget, false);
// THEN
QCOMPARE(backendRenderTarget.renderOutputs().size(), 0);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::AllDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
}
}
diff --git a/tests/auto/render/sceneloader/tst_sceneloader.cpp b/tests/auto/render/sceneloader/tst_sceneloader.cpp
index 8da82b609..e5ea8b6c1 100644
--- a/tests/auto/render/sceneloader/tst_sceneloader.cpp
+++ b/tests/auto/render/sceneloader/tst_sceneloader.cpp
@@ -46,6 +46,7 @@ private Q_SLOTS:
void checkInitialAndCleanedUpState()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::Scene sceneLoader;
Qt3DRender::Render::SceneManager sceneManager;
@@ -61,8 +62,9 @@ private Q_SLOTS:
frontendSceneLoader.setSource(newUrl);
// WHEN
+ sceneLoader.setRenderer(&renderer);
sceneLoader.setSceneManager(&sceneManager);
- simulateInitialization(&frontendSceneLoader, &sceneLoader);
+ simulateInitializationSync(&frontendSceneLoader, &sceneLoader);
// THEN
QVERIFY(!sceneLoader.peerId().isNull());
@@ -78,6 +80,7 @@ private Q_SLOTS:
void checkPeerPropertyMirroring()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::QSceneLoader frontendSceneLoader;
frontendSceneLoader.setSource(QUrl(QStringLiteral("file:///CorvetteMuseum")));
@@ -85,8 +88,9 @@ private Q_SLOTS:
Qt3DRender::Render::SceneManager sceneManager;
// WHEN
+ sceneLoader.setRenderer(&renderer);
sceneLoader.setSceneManager(&sceneManager);
- simulateInitialization(&frontendSceneLoader, &sceneLoader);
+ simulateInitializationSync(&frontendSceneLoader, &sceneLoader);
// THEN
QCOMPARE(sceneLoader.peerId(), frontendSceneLoader.id());
@@ -100,29 +104,27 @@ private Q_SLOTS:
TestRenderer renderer;
Qt3DRender::Render::Scene sceneLoader;
Qt3DRender::Render::SceneManager sceneManager;
+ Qt3DRender::QSceneLoader frontendSceneLoader;
sceneLoader.setRenderer(&renderer);
sceneLoader.setSceneManager(&sceneManager);
+ simulateInitializationSync(&frontendSceneLoader, &sceneLoader);
// THEN
QVERIFY(sceneManager.takePendingSceneLoaderJobs().isEmpty());
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
const QUrl newUrl(QStringLiteral("file:///Bownling_Green_KY"));
- updateChange->setValue(newUrl);
- updateChange->setPropertyName("source");
- sceneLoader.sceneChangeEvent(updateChange);
+ frontendSceneLoader.setSource(newUrl);
+ sceneLoader.syncFromFrontEnd(&frontendSceneLoader, false);
// THEN
QCOMPARE(sceneLoader.source(), newUrl);
QVERIFY(!sceneManager.takePendingSceneLoaderJobs().isEmpty());
// WHEN
- updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
- updateChange->setValue(false);
- updateChange->setPropertyName("enabled");
- sceneLoader.sceneChangeEvent(updateChange);
+ frontendSceneLoader.setEnabled(false);
+ sceneLoader.syncFromFrontEnd(&frontendSceneLoader, false);
// THEN
QCOMPARE(sceneLoader.isEnabled(), false);
@@ -179,29 +181,27 @@ private Q_SLOTS:
TestRenderer renderer;
Qt3DRender::Render::Scene sceneLoader;
Qt3DRender::Render::SceneManager sceneManager;
+ Qt3DRender::QSceneLoader frontendSceneLoader;
sceneLoader.setRenderer(&renderer);
sceneLoader.setSceneManager(&sceneManager);
+ simulateInitializationSync(&frontendSceneLoader, &sceneLoader);
// THEN
QVERIFY(sceneManager.takePendingSceneLoaderJobs().isEmpty());
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
const QUrl newUrl(QStringLiteral("file:///Bownling_Green_KY"));
- updateChange->setValue(newUrl);
- updateChange->setPropertyName("source");
- sceneLoader.sceneChangeEvent(updateChange);
+ frontendSceneLoader.setSource(newUrl);
+ sceneLoader.syncFromFrontEnd(&frontendSceneLoader, false);
// THEN
QCOMPARE(sceneLoader.source(), newUrl);
QVERIFY(!sceneManager.takePendingSceneLoaderJobs().isEmpty());
// WHEN
- updateChange.reset(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
- updateChange->setValue(QUrl());
- updateChange->setPropertyName("source");
- sceneLoader.sceneChangeEvent(updateChange);
+ frontendSceneLoader.setSource(QUrl());
+ sceneLoader.syncFromFrontEnd(&frontendSceneLoader, false);
// THEN -> we should still have generated a job to reset the scene (immediately)
QCOMPARE(sceneLoader.source(), QUrl());
diff --git a/tests/auto/render/shader/tst_shader.cpp b/tests/auto/render/shader/tst_shader.cpp
index 067db55e7..bfebe2467 100644
--- a/tests/auto/render/shader/tst_shader.cpp
+++ b/tests/auto/render/shader/tst_shader.cpp
@@ -97,7 +97,7 @@ void tst_RenderShader::matchesFrontendPeer()
Qt3DRender::Render::Shader backend;
backend.setRenderer(&renderer);
- simulateInitialization(frontend.data(), &backend);
+ simulateInitializationSync(frontend.data(), &backend);
QCOMPARE(backend.isLoaded(), false);
QVERIFY(backend.dna() != 0U);
@@ -113,7 +113,7 @@ void tst_RenderShader::cleanupLeavesACoherentState()
Qt3DRender::Render::Shader shader;
shader.setRenderer(&renderer);
- simulateInitialization(frontend.data(), &shader);
+ simulateInitializationSync(frontend.data(), &shader);
shader.cleanup();
@@ -130,73 +130,61 @@ void tst_RenderShader::cleanupLeavesACoherentState()
void tst_RenderShader::dealWithPropertyChanges_data()
{
- QTest::addColumn<QByteArray>("property");
QTest::addColumn<Qt3DRender::QShaderProgram::ShaderType>("type");
- QTest::newRow("vertex") << QByteArrayLiteral("vertexShaderCode")
- << Qt3DRender::QShaderProgram::Vertex;
+ QTest::newRow("vertex") << Qt3DRender::QShaderProgram::Vertex;
- QTest::newRow("tessControl") << QByteArrayLiteral("tessellationControlShaderCode")
- << Qt3DRender::QShaderProgram::TessellationControl;
+ QTest::newRow("tessControl") << Qt3DRender::QShaderProgram::TessellationControl;
- QTest::newRow("tessEval") << QByteArrayLiteral("tessellationEvaluationShaderCode")
- << Qt3DRender::QShaderProgram::TessellationEvaluation;
+ QTest::newRow("tessEval") << Qt3DRender::QShaderProgram::TessellationEvaluation;
- QTest::newRow("geometry") << QByteArrayLiteral("geometryShaderCode")
- << Qt3DRender::QShaderProgram::Geometry;
+ QTest::newRow("geometry") << Qt3DRender::QShaderProgram::Geometry;
- QTest::newRow("fragment") << QByteArrayLiteral("fragmentShaderCode")
- << Qt3DRender::QShaderProgram::Fragment;
+ QTest::newRow("fragment") << Qt3DRender::QShaderProgram::Fragment;
- QTest::newRow("compute") << QByteArrayLiteral("computeShaderCode")
- << Qt3DRender::QShaderProgram::Compute;
+ QTest::newRow("compute") << Qt3DRender::QShaderProgram::Compute;
}
void tst_RenderShader::dealWithPropertyChanges()
{
// GIVEN
- QFETCH(QByteArray, property);
QFETCH(Qt3DRender::QShaderProgram::ShaderType, type);
Qt3DRender::Render::Shader backend;
+ Qt3DRender::QShaderProgram shader;
backend.setLoaded(true);
TestRenderer renderer;
backend.setRenderer(&renderer);
+ simulateInitializationSync(&shader, &backend);
// WHEN
- auto updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(QStringLiteral("foo"));
- updateChange->setPropertyName(property);
- backend.sceneChangeEvent(updateChange);
+ shader.setShaderCode(type, QByteArrayLiteral("foo"));
+ backend.syncFromFrontEnd(&shader, false);
// THEN
- QCOMPARE(backend.shaderCode().at(type), QStringLiteral("foo"));
+ QCOMPARE(backend.shaderCode().at(type), QByteArrayLiteral("foo"));
QVERIFY(!backend.isLoaded());
QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::ShadersDirty);
renderer.resetDirty();
backend.setLoaded(true);
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(QStringLiteral("foo"));
- updateChange->setPropertyName(property);
- backend.sceneChangeEvent(updateChange);
+ shader.setShaderCode(type, QByteArrayLiteral("foo"));
+ backend.syncFromFrontEnd(&shader, false);
// THEN
- QCOMPARE(backend.shaderCode().at(type), QStringLiteral("foo"));
+ QCOMPARE(backend.shaderCode().at(type), QByteArrayLiteral("foo"));
QVERIFY(backend.isLoaded());
QCOMPARE(renderer.dirtyBits(), 0);
renderer.resetDirty();
backend.setLoaded(true);
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(QStringLiteral("bar"));
- updateChange->setPropertyName(property);
- backend.sceneChangeEvent(updateChange);
+ shader.setShaderCode(type, QByteArrayLiteral("bar"));
+ backend.syncFromFrontEnd(&shader, false);
// THEN
- QCOMPARE(backend.shaderCode().at(type), QStringLiteral("bar"));
+ QCOMPARE(backend.shaderCode().at(type), QByteArrayLiteral("bar"));
QVERIFY(!backend.isLoaded());
QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::ShadersDirty);
renderer.resetDirty();
@@ -216,7 +204,7 @@ void tst_RenderShader::checkSetRendererDirtyOnInitialization()
QCOMPARE(renderer.dirtyBits(), 0);
// WHEN
- simulateInitialization(frontend.data(), &shader);
+ simulateInitializationSync(frontend.data(), &shader);
// THEN
QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::ShadersDirty);
diff --git a/tests/auto/render/shaderbuilder/tst_shaderbuilder.cpp b/tests/auto/render/shaderbuilder/tst_shaderbuilder.cpp
index e365256cc..c9a290dbd 100644
--- a/tests/auto/render/shaderbuilder/tst_shaderbuilder.cpp
+++ b/tests/auto/render/shaderbuilder/tst_shaderbuilder.cpp
@@ -141,9 +141,11 @@ private slots:
// GIVEN
QFETCH(Qt3DRender::QShaderProgramBuilder*, frontend);
Qt3DRender::Render::ShaderBuilder backend;
+ TestRenderer renderer;
// WHEN
- simulateInitialization(frontend, &backend);
+ backend.setRenderer(&renderer);
+ simulateInitializationSync(frontend, &backend);
// THEN
QVERIFY(backend.isEnabled() == frontend->isEnabled());
@@ -199,25 +201,14 @@ private slots:
{
// GIVEN
Qt3DRender::Render::ShaderBuilder backend;
+ Qt3DRender::QShaderProgramBuilder frontend;
TestRenderer renderer;
backend.setRenderer(&renderer);
+ simulateInitializationSync(&frontend, &backend);
// WHEN
- auto updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(true);
- updateChange->setPropertyName("enabled");
- backend.sceneChangeEvent(updateChange);
-
- // THEN
- QVERIFY(backend.isEnabled());
- QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::ShadersDirty);
- renderer.resetDirty();
-
- // WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(false);
- updateChange->setPropertyName("enabled");
- backend.sceneChangeEvent(updateChange);
+ frontend.setEnabled(false);
+ backend.syncFromFrontEnd(&frontend, false);
// THEN
QVERIFY(!backend.isEnabled());
@@ -225,10 +216,8 @@ private slots:
renderer.resetDirty();
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(true);
- updateChange->setPropertyName("enabled");
- backend.sceneChangeEvent(updateChange);
+ frontend.setEnabled(true);
+ backend.syncFromFrontEnd(&frontend, false);
// AND
backend.cleanup();
@@ -242,26 +231,24 @@ private slots:
{
// GIVEN
Qt3DRender::Render::ShaderBuilder backend;
+ Qt3DRender::QShaderProgramBuilder frontend;
TestRenderer renderer;
backend.setRenderer(&renderer);
- const auto programId = Qt3DCore::QNodeId::createId();
+ simulateInitializationSync(&frontend, &backend);
// WHEN
- auto updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(QVariant::fromValue(programId));
- updateChange->setPropertyName("shaderProgram");
- backend.sceneChangeEvent(updateChange);
+ Qt3DRender::QShaderProgram prog;
+ frontend.setShaderProgram(&prog);
+ backend.syncFromFrontEnd(&frontend, false);
// THEN
- QCOMPARE(backend.shaderProgramId(), programId);
+ QCOMPARE(backend.shaderProgramId(), prog.id());
QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::ShadersDirty);
renderer.resetDirty();
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(QVariant::fromValue(Qt3DCore::QNodeId()));
- updateChange->setPropertyName("shaderProgram");
- backend.sceneChangeEvent(updateChange);
+ frontend.setShaderProgram(nullptr);
+ backend.syncFromFrontEnd(&frontend, false);
// THEN
QVERIFY(backend.shaderProgramId().isNull());
@@ -269,10 +256,8 @@ private slots:
renderer.resetDirty();
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(QVariant::fromValue(programId));
- updateChange->setPropertyName("shaderProgram");
- backend.sceneChangeEvent(updateChange);
+ frontend.setShaderProgram(&prog);
+ backend.syncFromFrontEnd(&frontend, false);
// AND
backend.cleanup();
@@ -286,21 +271,34 @@ private slots:
{
// GIVEN
Qt3DRender::Render::ShaderBuilder backend;
+ Qt3DRender::QShaderProgramBuilder frontend;
TestRenderer renderer;
backend.setRenderer(&renderer);
+ simulateInitializationSync(&frontend, &backend);
const auto layers = QStringList() << "foo" << "bar";
- for (int i = 0; i <= Qt3DRender::Render::ShaderBuilder::Compute; i++) {
- const auto type = static_cast<Qt3DRender::Render::ShaderBuilder::ShaderType>(i);
+ static const std::pair<
+ Qt3DRender::Render::ShaderBuilder::ShaderType,
+ void (Qt3DRender::QShaderProgramBuilder::*)(const QUrl &)
+ >
+ shaderTypesToSetters[] = {
+ {Qt3DRender::Render::ShaderBuilder::Vertex, &Qt3DRender::QShaderProgramBuilder::setVertexShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::TessellationControl, &Qt3DRender::QShaderProgramBuilder::setTessellationControlShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::TessellationEvaluation, &Qt3DRender::QShaderProgramBuilder::setTessellationEvaluationShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::Geometry, &Qt3DRender::QShaderProgramBuilder::setGeometryShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::Fragment, &Qt3DRender::QShaderProgramBuilder::setFragmentShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::Compute, &Qt3DRender::QShaderProgramBuilder::setComputeShaderGraph},
+ };
+
+
+ for (auto it = std::begin(shaderTypesToSetters), end = std::end(shaderTypesToSetters); it != end; ++it) {
const auto graphUrl = QUrl::fromEncoded("qrc:/input.json");
- backend.setShaderGraph(type, graphUrl);
+ (frontend.*(it->second))(graphUrl);
}
// WHEN
- auto updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(layers);
- updateChange->setPropertyName("enabledLayers");
- backend.sceneChangeEvent(updateChange);
+ frontend.setEnabledLayers(layers);
+ backend.syncFromFrontEnd(&frontend, false);
// THEN
QCOMPARE(backend.enabledLayers(), layers);
@@ -313,10 +311,8 @@ private slots:
renderer.resetDirty();
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(layers);
- updateChange->setPropertyName("enabledLayers");
- backend.sceneChangeEvent(updateChange);
+ frontend.setEnabledLayers(layers);
+ backend.syncFromFrontEnd(&frontend, false);
// THEN
QCOMPARE(backend.enabledLayers(), layers);
@@ -325,14 +321,12 @@ private slots:
QVERIFY(!backend.isShaderCodeDirty(type));
backend.generateCode(type); // Resets the dirty flag
}
- QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::ShadersDirty);
+ QCOMPARE(renderer.dirtyBits(), 0);
renderer.resetDirty();
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(QStringList());
- updateChange->setPropertyName("enabledLayers");
- backend.sceneChangeEvent(updateChange);
+ frontend.setEnabledLayers(QStringList());
+ backend.syncFromFrontEnd(&frontend, false);
// THEN
QVERIFY(backend.shaderProgramId().isNull());
@@ -345,10 +339,8 @@ private slots:
renderer.resetDirty();
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(layers);
- updateChange->setPropertyName("enabledLayers");
- backend.sceneChangeEvent(updateChange);
+ frontend.setEnabledLayers(layers);
+ backend.syncFromFrontEnd(&frontend, false);
// AND
backend.cleanup();
@@ -365,64 +357,68 @@ private slots:
void shouldHandleShaderGraphPropertiesChanges_data()
{
- QTest::addColumn<QByteArray>("property");
QTest::addColumn<Qt3DRender::Render::ShaderBuilder::ShaderType>("type");
QTest::addColumn<QUrl>("graphUrl");
- QTest::newRow("vertex") << QByteArrayLiteral("vertexShaderGraph")
- << Qt3DRender::Render::ShaderBuilder::Vertex
+ QTest::newRow("vertex") << Qt3DRender::Render::ShaderBuilder::Vertex
<< QUrl::fromEncoded("qrc:/vertex.json");
- QTest::newRow("tessControl") << QByteArrayLiteral("tessellationControlShaderGraph")
- << Qt3DRender::Render::ShaderBuilder::TessellationControl
+ QTest::newRow("tessControl") << Qt3DRender::Render::ShaderBuilder::TessellationControl
<< QUrl::fromEncoded("qrc:/tesscontrol.json");
- QTest::newRow("tessEval") << QByteArrayLiteral("tessellationEvaluationShaderGraph")
- << Qt3DRender::Render::ShaderBuilder::TessellationEvaluation
+ QTest::newRow("tessEval") << Qt3DRender::Render::ShaderBuilder::TessellationEvaluation
<< QUrl::fromEncoded("qrc:/tesseval.json");
- QTest::newRow("geometry") << QByteArrayLiteral("geometryShaderGraph")
- << Qt3DRender::Render::ShaderBuilder::Geometry
+ QTest::newRow("geometry") << Qt3DRender::Render::ShaderBuilder::Geometry
<< QUrl::fromEncoded("qrc:/geometry.json");
- QTest::newRow("fragment") << QByteArrayLiteral("fragmentShaderGraph")
- << Qt3DRender::Render::ShaderBuilder::Fragment
+ QTest::newRow("fragment") << Qt3DRender::Render::ShaderBuilder::Fragment
<< QUrl::fromEncoded("qrc:/fragment.json");
- QTest::newRow("compute") << QByteArrayLiteral("computeShaderGraph")
- << Qt3DRender::Render::ShaderBuilder::Compute
+ QTest::newRow("compute") << Qt3DRender::Render::ShaderBuilder::Compute
<< QUrl::fromEncoded("qrc:/compute.json");
}
void shouldHandleShaderGraphPropertiesChanges()
{
// GIVEN
- QFETCH(QByteArray, property);
QFETCH(Qt3DRender::Render::ShaderBuilder::ShaderType, type);
QFETCH(QUrl, graphUrl);
Qt3DRender::Render::ShaderBuilder backend;
+ Qt3DRender::QShaderProgramBuilder frontend;
TestRenderer renderer;
backend.setRenderer(&renderer);
+ simulateInitializationSync(&frontend, &backend);
+
+ static const QHash<
+ Qt3DRender::Render::ShaderBuilder::ShaderType,
+ void (Qt3DRender::QShaderProgramBuilder::*)(const QUrl &)
+ >
+ shaderTypesToSetters = {
+ {Qt3DRender::Render::ShaderBuilder::Vertex, &Qt3DRender::QShaderProgramBuilder::setVertexShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::TessellationControl, &Qt3DRender::QShaderProgramBuilder::setTessellationControlShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::TessellationEvaluation, &Qt3DRender::QShaderProgramBuilder::setTessellationEvaluationShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::Geometry, &Qt3DRender::QShaderProgramBuilder::setGeometryShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::Fragment, &Qt3DRender::QShaderProgramBuilder::setFragmentShaderGraph},
+ {Qt3DRender::Render::ShaderBuilder::Compute, &Qt3DRender::QShaderProgramBuilder::setComputeShaderGraph},
+ };
// WHEN
- auto updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(QUrl());
- updateChange->setPropertyName(property);
- backend.sceneChangeEvent(updateChange);
+
+ (frontend.*(shaderTypesToSetters[type]))(QUrl());
+ backend.syncFromFrontEnd(&frontend, false);
// THEN
QCOMPARE(backend.shaderGraph(type), QUrl());
QVERIFY(!backend.isShaderCodeDirty(type));
QVERIFY(backend.shaderCode(type).isEmpty());
- QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::ShadersDirty);
+ QCOMPARE(renderer.dirtyBits(), 0);
renderer.resetDirty();
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(graphUrl);
- updateChange->setPropertyName(property);
- backend.sceneChangeEvent(updateChange);
+ (frontend.*(shaderTypesToSetters[type]))(graphUrl);
+ backend.syncFromFrontEnd(&frontend, false);
// THEN
QCOMPARE(backend.shaderGraph(type), graphUrl);
@@ -432,10 +428,8 @@ private slots:
renderer.resetDirty();
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(QUrl());
- updateChange->setPropertyName(property);
- backend.sceneChangeEvent(updateChange);
+ (frontend.*(shaderTypesToSetters[type]))(QUrl());
+ backend.syncFromFrontEnd(&frontend, false);
// THEN
QCOMPARE(backend.shaderGraph(type), QUrl());
@@ -445,10 +439,8 @@ private slots:
renderer.resetDirty();
// WHEN
- updateChange = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- updateChange->setValue(graphUrl);
- updateChange->setPropertyName(property);
- backend.sceneChangeEvent(updateChange);
+ (frontend.*(shaderTypesToSetters[type]))(graphUrl);
+ backend.syncFromFrontEnd(&frontend, false);
// AND
backend.cleanup();
diff --git a/tests/auto/render/shaderimage/tst_shaderimage.cpp b/tests/auto/render/shaderimage/tst_shaderimage.cpp
index 6f1e691cc..6b2fc8ad7 100644
--- a/tests/auto/render/shaderimage/tst_shaderimage.cpp
+++ b/tests/auto/render/shaderimage/tst_shaderimage.cpp
@@ -42,6 +42,7 @@
#include <Qt3DRender/private/qshaderimage_p.h>
#include <Qt3DRender/private/shaderimage_p.h>
#include <Qt3DCore/qpropertyupdatedchange.h>
+#include <Qt3DRender/qtexture.h>
#include "qbackendnodetester.h"
#include "testrenderer.h"
@@ -98,11 +99,13 @@ private Q_SLOTS:
{
// GIVEN
Qt3DRender::QShaderImage shaderImage;
+ TestRenderer renderer;
{
// WHEN
Qt3DRender::Render::ShaderImage backendShaderImage;
- simulateInitialization(&shaderImage, &backendShaderImage);
+ backendShaderImage.setRenderer(&renderer);
+ simulateInitializationSync(&shaderImage, &backendShaderImage);
// THEN
QCOMPARE(backendShaderImage.isEnabled(), true);
@@ -118,7 +121,8 @@ private Q_SLOTS:
// WHEN
Qt3DRender::Render::ShaderImage backendShaderImage;
shaderImage.setEnabled(false);
- simulateInitialization(&shaderImage, &backendShaderImage);
+ backendShaderImage.setRenderer(&renderer);
+ simulateInitializationSync(&shaderImage, &backendShaderImage);
// THEN
QCOMPARE(backendShaderImage.peerId(), shaderImage.id());
@@ -129,39 +133,35 @@ private Q_SLOTS:
void checkSceneChangeEvents()
{
// GIVEN
+ Qt3DRender::QShaderImage shaderImage;
Qt3DRender::Render::ShaderImage backendShaderImage;
TestRenderer renderer;
backendShaderImage.setRenderer(&renderer);
+ simulateInitializationSync(&shaderImage, &backendShaderImage);
{
// WHEN
const bool newValue = false;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("enabled");
- change->setValue(newValue);
- backendShaderImage.sceneChangeEvent(change);
+ shaderImage.setEnabled(newValue);
+ backendShaderImage.syncFromFrontEnd(&shaderImage, false);
// THEN
QCOMPARE(backendShaderImage.isEnabled(), newValue);
}
{
// WHEN
- const Qt3DCore::QNodeId newValue = Qt3DCore::QNodeId::createId();
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("texture");
- change->setValue(QVariant::fromValue(newValue));
- backendShaderImage.sceneChangeEvent(change);
+ Qt3DRender::QTexture2D tex2D;
+ shaderImage.setTexture(&tex2D);
+ backendShaderImage.syncFromFrontEnd(&shaderImage, false);
// THEN
- QCOMPARE(backendShaderImage.textureId(), newValue);
+ QCOMPARE(backendShaderImage.textureId(), tex2D.id());
}
{
// WHEN
const int newValue = 883;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("mipLevel");
- change->setValue(QVariant::fromValue(newValue));
- backendShaderImage.sceneChangeEvent(change);
+ shaderImage.setMipLevel(newValue);
+ backendShaderImage.syncFromFrontEnd(&shaderImage, false);
// THEN
QCOMPARE(backendShaderImage.mipLevel(), newValue);
@@ -169,10 +169,8 @@ private Q_SLOTS:
{
// WHEN
const int newValue = 1584;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("layer");
- change->setValue(QVariant::fromValue(newValue));
- backendShaderImage.sceneChangeEvent(change);
+ shaderImage.setLayer(newValue);
+ backendShaderImage.syncFromFrontEnd(&shaderImage, false);
// THEN
QCOMPARE(backendShaderImage.layer(), newValue);
@@ -180,10 +178,8 @@ private Q_SLOTS:
{
// WHEN
const bool newValue = true;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("layered");
- change->setValue(QVariant::fromValue(newValue));
- backendShaderImage.sceneChangeEvent(change);
+ shaderImage.setLayered(newValue);
+ backendShaderImage.syncFromFrontEnd(&shaderImage, false);
// THEN
QCOMPARE(backendShaderImage.layered(), newValue);
@@ -191,10 +187,8 @@ private Q_SLOTS:
{
// WHEN
const Qt3DRender::QShaderImage::Access newValue = Qt3DRender::QShaderImage::WriteOnly;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("access");
- change->setValue(QVariant::fromValue(newValue));
- backendShaderImage.sceneChangeEvent(change);
+ shaderImage.setAccess(newValue);
+ backendShaderImage.syncFromFrontEnd(&shaderImage, false);
// THEN
QCOMPARE(backendShaderImage.access(), newValue);
@@ -202,10 +196,8 @@ private Q_SLOTS:
{
// WHEN
const Qt3DRender::QShaderImage::ImageFormat newValue = Qt3DRender::QShaderImage::RG16F;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("format");
- change->setValue(QVariant::fromValue(newValue));
- backendShaderImage.sceneChangeEvent(change);
+ shaderImage.setFormat(newValue);
+ backendShaderImage.syncFromFrontEnd(&shaderImage, false);
// THEN
QCOMPARE(backendShaderImage.format(), newValue);
diff --git a/tests/auto/render/technique/tst_technique.cpp b/tests/auto/render/technique/tst_technique.cpp
index 64a66f0c8..2ed39e315 100644
--- a/tests/auto/render/technique/tst_technique.cpp
+++ b/tests/auto/render/technique/tst_technique.cpp
@@ -308,6 +308,7 @@ private Q_SLOTS:
void checkIsCompatibleWithFilters()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::Technique backendTechnique;
Qt3DRender::Render::NodeManagers nodeManagers;
@@ -339,11 +340,17 @@ private Q_SLOTS:
Qt3DRender::Render::FilterKey *backendFilterKey4 = nodeManagers.filterKeyManager()->getOrCreateResource(filterKey4->id());
Qt3DRender::Render::FilterKey *backendFilterKey5 = nodeManagers.filterKeyManager()->getOrCreateResource(filterKey5->id());
- simulateInitialization(filterKey1, backendFilterKey1);
- simulateInitialization(filterKey2, backendFilterKey2);
- simulateInitialization(filterKey3, backendFilterKey3);
- simulateInitialization(filterKey4, backendFilterKey4);
- simulateInitialization(filterKey5, backendFilterKey5);
+ backendFilterKey1->setRenderer(&renderer);
+ backendFilterKey2->setRenderer(&renderer);
+ backendFilterKey3->setRenderer(&renderer);
+ backendFilterKey4->setRenderer(&renderer);
+ backendFilterKey5->setRenderer(&renderer);
+
+ simulateInitializationSync(filterKey1, backendFilterKey1);
+ simulateInitializationSync(filterKey2, backendFilterKey2);
+ simulateInitializationSync(filterKey3, backendFilterKey3);
+ simulateInitializationSync(filterKey4, backendFilterKey4);
+ simulateInitializationSync(filterKey5, backendFilterKey5);
// THEN
QCOMPARE(nodeManagers.filterKeyManager()->activeHandles().size(), 5);
diff --git a/tests/auto/render/textures/tst_textures.cpp b/tests/auto/render/textures/tst_textures.cpp
index 1cd11b153..725ddc269 100644
--- a/tests/auto/render/textures/tst_textures.cpp
+++ b/tests/auto/render/textures/tst_textures.cpp
@@ -141,6 +141,11 @@ public:
{
}
+ void updateGenerator()
+ {
+ Qt3DRender::QAbstractTextureImage::notifyDataGeneratorChanged();
+ }
+
Qt3DRender::QTextureImageDataGeneratorPtr dataGenerator() const
{
return Qt3DRender::QTextureImageDataGeneratorPtr(new TestImageDataGenerator(m_genId));
@@ -187,17 +192,20 @@ class tst_RenderTextures : public Qt3DCore::QBackendNodeTester
Qt3DRender::Render::Texture *createBackendTexture(Qt3DRender::QAbstractTexture *frontend,
Qt3DRender::Render::TextureManager *texMgr,
- Qt3DRender::Render::TextureImageManager *texImgMgr)
+ Qt3DRender::Render::TextureImageManager *texImgMgr,
+ Qt3DRender::Render::AbstractRenderer *renderer)
{
Qt3DRender::Render::Texture *backend = texMgr->getOrCreateResource(frontend->id());
- simulateInitialization(frontend, backend);
+ backend->setRenderer(renderer);
+ simulateInitializationSync(frontend, backend);
// create texture images
for (const auto texImgFrontend : frontend->textureImages()) {
// make sure TextureImageManager has backend node for this QTextureImage
if (!texImgMgr->contains(texImgFrontend->id())) {
Qt3DRender::Render::TextureImage *texImgBackend = texImgMgr->getOrCreateResource(texImgFrontend->id());
- simulateInitialization(texImgFrontend, texImgBackend);
+ texImgBackend->setRenderer(renderer);
+ simulateInitializationSync(texImgFrontend, texImgBackend);
}
backend->addTextureImage(texImgFrontend->id());
}
@@ -221,10 +229,12 @@ private Q_SLOTS:
// WHEN
Qt3DRender::Render::Texture *bt1a = createBackendTexture(tex1a,
mgrs->textureManager(),
- mgrs->textureImageManager());
+ mgrs->textureImageManager(),
+ &renderer);
Qt3DRender::Render::Texture *bt1b = createBackendTexture(tex1b,
mgrs->textureManager(),
- mgrs->textureImageManager());
+ mgrs->textureImageManager(),
+ &renderer);
renderer.updateTexture(bt1a);
renderer.updateTexture(bt1b);
@@ -254,7 +264,8 @@ private Q_SLOTS:
for (auto *t : textures) {
Qt3DRender::Render::Texture *backendTexture = createBackendTexture(t,
mgrs->textureManager(),
- mgrs->textureImageManager());
+ mgrs->textureImageManager(),
+ &renderer);
backend.push_back(backendTexture);
renderer.updateTexture(backendTexture);
}
@@ -303,10 +314,12 @@ private Q_SLOTS:
// WHEN
Qt3DRender::Render::Texture *bt1 = createBackendTexture(tex1a,
mgrs->textureManager(),
- mgrs->textureImageManager());
+ mgrs->textureImageManager(),
+ &renderer);
Qt3DRender::Render::Texture *bt2 = createBackendTexture(tex1b,
mgrs->textureManager(),
- mgrs->textureImageManager());
+ mgrs->textureImageManager(),
+ &renderer);
// THEN
QCOMPARE(bt1->sharedTextureId(), 1);
QCOMPARE(bt2->sharedTextureId(), 1);
@@ -332,10 +345,12 @@ private Q_SLOTS:
// WHEN
Qt3DRender::Render::Texture *bt1 = createBackendTexture(tex1a,
mgrs->textureManager(),
- mgrs->textureImageManager());
+ mgrs->textureImageManager(),
+ &renderer);
Qt3DRender::Render::Texture *bt2 = createBackendTexture(tex1b,
mgrs->textureManager(),
- mgrs->textureImageManager());
+ mgrs->textureImageManager(),
+ &renderer);
// THEN
QCOMPARE(bt1->sharedTextureId(), 1);
QCOMPARE(bt2->sharedTextureId(), 2);
@@ -372,7 +387,8 @@ private Q_SLOTS:
for (auto *t : textures) {
Qt3DRender::Render::Texture *backendTexture = createBackendTexture(t,
mgrs->textureManager(),
- mgrs->textureImageManager());
+ mgrs->textureImageManager(),
+ &renderer);
backend.push_back(backendTexture);
renderer.updateTexture(backendTexture);
}
@@ -416,13 +432,15 @@ private Q_SLOTS:
void checkTextureImageCleanupState()
{
// GIVEN
+ Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous);
TestTextureImage img(1);
img.setLayer(2);
img.setMipLevel(3);
// WHEN
Qt3DRender::Render::TextureImage texImgBackend;
- simulateInitialization(&img, &texImgBackend);
+ texImgBackend.setRenderer(&renderer);
+ simulateInitializationSync(&img, &texImgBackend);
texImgBackend.cleanup();
// THEN
@@ -431,11 +449,14 @@ private Q_SLOTS:
QCOMPARE(texImgBackend.mipLevel(), 0);
QCOMPARE(texImgBackend.face(), Qt3DRender::QAbstractTexture::CubeMapPositiveX);
QVERIFY(texImgBackend.dataGenerator().isNull());
+
+ renderer.shutdown();
}
void checkTextureImageInitializeFromPeer()
{
// GIVEN
+ Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous);
TestTextureImage img(1);
{
@@ -444,7 +465,8 @@ private Q_SLOTS:
img.setMipLevel(3);
Qt3DRender::Render::TextureImage texImgBackend;
- simulateInitialization(&img, &texImgBackend);
+ texImgBackend.setRenderer(&renderer);
+ simulateInitializationSync(&img, &texImgBackend);
// THEN
QCOMPARE(texImgBackend.isEnabled(), true);
@@ -461,28 +483,31 @@ private Q_SLOTS:
img.setEnabled(false);
Qt3DRender::Render::TextureImage texImgBackend;
- simulateInitialization(&img, &texImgBackend);
+ texImgBackend.setRenderer(&renderer);
+ simulateInitializationSync(&img, &texImgBackend);
// THEN
QCOMPARE(texImgBackend.isEnabled(), false);
QCOMPARE(texImgBackend.peerId(), img.id());
}
+
+ renderer.shutdown();
}
void checkTextureImageSceneChangeEvents()
{
// GIVEN
Qt3DRender::Render::TextureImage backendImage;
+ TestTextureImage textureImage(1);
TestRenderer renderer;
backendImage.setRenderer(&renderer);
+ simulateInitializationSync(&textureImage, &backendImage);
{
// WHEN
const bool newValue = false;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("enabled");
- change->setValue(newValue);
- backendImage.sceneChangeEvent(change);
+ textureImage.setEnabled(newValue);
+ backendImage.syncFromFrontEnd(&textureImage, false);
// THEN
QCOMPARE(backendImage.isEnabled(), newValue);
@@ -495,10 +520,8 @@ private Q_SLOTS:
{
// WHEN
const int newValue = 7;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("layer");
- change->setValue(newValue);
- backendImage.sceneChangeEvent(change);
+ textureImage.setLayer(newValue);
+ backendImage.syncFromFrontEnd(&textureImage, false);
// THEN
QCOMPARE(backendImage.layer(), newValue);
@@ -511,10 +534,9 @@ private Q_SLOTS:
{
// WHEN
const int newValue = 3;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("mipLevel");
- change->setValue(newValue);
- backendImage.sceneChangeEvent(change);
+ textureImage.setMipLevel(newValue);
+ backendImage.syncFromFrontEnd(&textureImage, false);
+
// THEN
QCOMPARE(backendImage.mipLevel(), newValue);
@@ -527,10 +549,8 @@ private Q_SLOTS:
{
// WHEN
const Qt3DRender::QAbstractTexture::CubeMapFace newValue = Qt3DRender::QAbstractTexture::CubeMapNegativeX;
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("face");
- change->setValue(newValue);
- backendImage.sceneChangeEvent(change);
+ textureImage.setFace(newValue);
+ backendImage.syncFromFrontEnd(&textureImage, false);
// THEN
QCOMPARE(backendImage.face(), newValue);
@@ -542,45 +562,24 @@ private Q_SLOTS:
{
// WHEN
- Qt3DRender::QTextureImageDataGeneratorPtr generator1(new TestImageDataGenerator(883));
- auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("dataGenerator");
- change->setValue(QVariant::fromValue(generator1));
- backendImage.sceneChangeEvent(change);
+ textureImage.updateGenerator();
+ backendImage.syncFromFrontEnd(&textureImage, false);
// THEN
- QCOMPARE(backendImage.dataGenerator(), generator1);
QVERIFY(backendImage.isDirty());
QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::AllDirty);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
backendImage.unsetDirty();
// WHEN
- Qt3DRender::QTextureImageDataGeneratorPtr generator2(new TestImageDataGenerator(1584));
- change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("dataGenerator");
- change->setValue(QVariant::fromValue(generator2));
- backendImage.sceneChangeEvent(change);
+ textureImage.updateGenerator();
+ backendImage.syncFromFrontEnd(&textureImage, false);
// THEN
QVERIFY(backendImage.isDirty());
QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::AllDirty);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
backendImage.unsetDirty();
-
- // WHEN
- Qt3DRender::QTextureImageDataGeneratorPtr generator3;
- change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("dataGenerator");
- change->setValue(QVariant::fromValue(generator3));
- backendImage.sceneChangeEvent(change);
-
- // THEN
- QVERIFY(backendImage.dataGenerator().isNull());
- QVERIFY(backendImage.isDirty());
- QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::AllDirty);
- renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
- backendImage.unsetDirty();
}
renderer.shutdown();
@@ -598,7 +597,8 @@ private Q_SLOTS:
Qt3DRender::QAbstractTexture* frontendTexture = createQTexture(1, {1}, true);
Qt3DRender::Render::Texture *backendTexture = texMgr->getOrCreateResource(frontendTexture->id());
- simulateInitialization(frontendTexture, backendTexture);
+ backendTexture->setRenderer(&renderer);
+ simulateInitializationSync(frontendTexture, backendTexture);
// THEN
QCOMPARE(backendTexture->textureImageIds().size(), 1);
@@ -613,7 +613,8 @@ private Q_SLOTS:
// WHEN
Qt3DRender::Render::TextureImage *texImgBackend = texImgMgr->getOrCreateResource(texImgFrontend->id());
- simulateInitialization(texImgFrontend, texImgBackend);
+ texImgBackend->setRenderer(&renderer);
+ simulateInitializationSync(texImgFrontend, texImgBackend);
// THEN
qDebug() << frontendGenerator << texImgBackend->dataGenerator();
@@ -638,7 +639,8 @@ private Q_SLOTS:
Qt3DRender::QAbstractTexture* frontendTexture = createQTexture(1, {1}, true);
Qt3DRender::Render::Texture *backendTexture = static_cast<Qt3DRender::Render::Texture *>(textureBackendNodeMapper.create(creationChange(frontendTexture)));
- simulateInitialization(frontendTexture, backendTexture);
+ backendTexture->setRenderer(&renderer);
+ simulateInitializationSync(frontendTexture, backendTexture);
// THEN
QVERIFY(backendTexture != nullptr);
@@ -671,7 +673,8 @@ private Q_SLOTS:
Qt3DRender::QAbstractTexture* frontendTexture = createQTexture(1, {1}, true);
Qt3DRender::Render::Texture *backendTexture = static_cast<Qt3DRender::Render::Texture *>(textureBackendNodeMapper.create(creationChange(frontendTexture)));
- simulateInitialization(frontendTexture, backendTexture);
+ backendTexture->setRenderer(&renderer);
+ simulateInitializationSync(frontendTexture, backendTexture);
// WHEN
textureBackendNodeMapper.destroy(frontendTexture->id());
@@ -683,7 +686,8 @@ private Q_SLOTS:
// WHEN
backendTexture = static_cast<Qt3DRender::Render::Texture *>(textureBackendNodeMapper.create(creationChange(frontendTexture)));
- simulateInitialization(frontendTexture, backendTexture);
+ backendTexture->setRenderer(&renderer);
+ simulateInitializationSync(frontendTexture, backendTexture);
// THEN
QVERIFY(backendTexture != nullptr);
@@ -703,10 +707,10 @@ private Q_SLOTS:
renderer.setNodeManagers(mgrs.data());
Qt3DRender::QTexture2D *texture1 = new Qt3DRender::QTexture2D();
- Qt3DRender::QAbstractTextureImage *image1 = new EmptyTextureImage();
+ TestTextureImage *image1 = new TestTextureImage(1);
Qt3DRender::QTexture2D *texture2 = new Qt3DRender::QTexture2D();
- Qt3DRender::QAbstractTextureImage *image2 = new EmptyTextureImage();
+ TestTextureImage *image2 = new TestTextureImage(2);
Qt3DRender::QTexture2D *texture3 = new Qt3DRender::QTexture2D();
@@ -721,18 +725,17 @@ private Q_SLOTS:
Qt3DRender::Render::TextureImage *backendImage1 = texImgMgr->getOrCreateResource(image1->id());
Qt3DRender::Render::TextureImage *backendImage2 = texImgMgr->getOrCreateResource(image2->id());
- simulateInitialization(texture1, backendTexture1);
- simulateInitialization(texture2, backendTexture2);
- simulateInitialization(texture3, backendTexture3);
- simulateInitialization(image1, backendImage1);
- simulateInitialization(image2, backendImage2);
-
backendTexture1->setRenderer(&renderer);
backendTexture2->setRenderer(&renderer);
backendTexture3->setRenderer(&renderer);
backendImage1->setRenderer(&renderer);
backendImage2->setRenderer(&renderer);
+ simulateInitializationSync(texture1, backendTexture1);
+ simulateInitializationSync(texture2, backendTexture2);
+ simulateInitializationSync(texture3, backendTexture3);
+ simulateInitializationSync(image1, backendImage1);
+ simulateInitializationSync(image2, backendImage2);
// THEN
QCOMPARE(backendTexture1->textureImageIds().size(), 1);
@@ -765,9 +768,8 @@ private Q_SLOTS:
// WHEN
// Make Image1 dirty
- const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId());
- change->setPropertyName("dataGenerator");
- backendImage1->sceneChangeEvent(change);
+ image1->updateGenerator();
+ backendImage1->syncFromFrontEnd(image1, false);
// THEN
QVERIFY(backendImage1->isDirty());
@@ -788,7 +790,8 @@ private Q_SLOTS:
backendTexture3->unsetDirty();
// WHEN
- backendImage2->sceneChangeEvent(change);
+ image2->updateGenerator();
+ backendImage2->syncFromFrontEnd(image2, false);
// THEN
QVERIFY(backendImage2->isDirty());