summaryrefslogtreecommitdiffstats
path: root/tests/auto/render/renderpass/tst_renderpass.cpp
diff options
context:
space:
mode:
authorWieland Hagen <wieland.hagen@kdab.com>2016-02-18 16:56:22 +0100
committerWieland Hagen <wieland.hagen@kdab.com>2016-02-24 13:51:13 +0000
commit143b1c9a0993c371941919acbe52c76f7636502e (patch)
treee2a410d21856c524def9fa0a4a6d513f506d7349 /tests/auto/render/renderpass/tst_renderpass.cpp
parent192f278cf1eb3b3074b0c6f0b0f18bf1dea463c3 (diff)
Propagate backend node changes to Renderer; render-on-demand
Each sceneChangeEvent marks a dirty bit in the AbstractRenderer. If no changes were accumulated during one frame, the renderer decides not to render the frame, by returning false from shouldRender(). We still need to go through each backend node and see what flags to set exactly, and to make sure we also react on backend-initiated changes. Change-Id: I80588bc5c4ebeb5d57b45ddfbd4d79ec268968b1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/render/renderpass/tst_renderpass.cpp')
-rw-r--r--tests/auto/render/renderpass/tst_renderpass.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/auto/render/renderpass/tst_renderpass.cpp b/tests/auto/render/renderpass/tst_renderpass.cpp
index eea26fcd7..603cfb2a2 100644
--- a/tests/auto/render/renderpass/tst_renderpass.cpp
+++ b/tests/auto/render/renderpass/tst_renderpass.cpp
@@ -59,6 +59,8 @@
#include <Qt3DRender/private/renderstates_p.h>
#include <Qt3DRender/private/managers_p.h>
+#include "testrenderer.h"
+
using namespace Qt3DCore;
using namespace Qt3DRender;
using namespace Qt3DRender::Render;
@@ -136,6 +138,8 @@ private slots:
QScopedPointer<QShaderProgram> shader(new QShaderProgram);
RenderPass backend;
+ TestRenderer renderer;
+ backend.setRenderer(&renderer);
// WHEN
QScenePropertyChangePtr addChange(new QScenePropertyChange(NodeAdded, QSceneChange::Node, shader->id()));
@@ -145,6 +149,7 @@ private slots:
// THEN
QCOMPARE(backend.shaderProgram(), shader->id());
+ QVERIFY(renderer.dirtyBits() != 0);
// WHEN
QScenePropertyChangePtr removeChange(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, shader->id()));
@@ -162,6 +167,8 @@ private slots:
QScopedPointer<QAnnotation> annotation(new QAnnotation);
RenderPass backend;
+ TestRenderer renderer;
+ backend.setRenderer(&renderer);
// WHEN
QScenePropertyChangePtr addChange(new QScenePropertyChange(NodeAdded, QSceneChange::Node, annotation->id()));
@@ -172,6 +179,7 @@ private slots:
// THEN
QCOMPARE(backend.annotations().size(), 1);
QCOMPARE(backend.annotations().first(), annotation->id());
+ QVERIFY(renderer.dirtyBits() != 0);
// WHEN
QScenePropertyChangePtr removeChange(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, annotation->id()));
@@ -189,6 +197,8 @@ private slots:
QScopedPointer<QParameterMapping> binding(new QParameterMapping);
RenderPass backend;
+ TestRenderer renderer;
+ backend.setRenderer(&renderer);
// WHEN
QScenePropertyChangePtr addChange(new QScenePropertyChange(NodeAdded, QSceneChange::Node, binding->id()));
@@ -202,6 +212,7 @@ private slots:
QCOMPARE(backend.bindings().first().bindingType(), binding->bindingType());
QCOMPARE(backend.bindings().first().parameterName(), binding->parameterName());
QCOMPARE(backend.bindings().first().shaderVariableName(), binding->shaderVariableName());
+ QVERIFY(renderer.dirtyBits() != 0);
// WHEN
QScenePropertyChangePtr removeChange(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, binding->id()));
@@ -219,6 +230,8 @@ private slots:
QScopedPointer<QParameter> parameter(new QParameter);
RenderPass backend;
+ TestRenderer renderer;
+ backend.setRenderer(&renderer);
// WHEN
QScenePropertyChangePtr addChange(new QScenePropertyChange(NodeAdded, QSceneChange::Node, parameter->id()));
@@ -229,6 +242,7 @@ private slots:
// THEN
QCOMPARE(backend.parameters().size(), 1);
QCOMPARE(backend.parameters().first(), parameter->id());
+ QVERIFY(renderer.dirtyBits() != 0);
// WHEN
QScenePropertyChangePtr removeChange(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, parameter->id()));
@@ -246,6 +260,8 @@ private slots:
QNodePtr frontendStatePtr(frontendState);
RenderPass backend;
+ TestRenderer renderer;
+ backend.setRenderer(&renderer);
RenderStateNode *backendState = m_renderStateManager->getOrCreateResource(frontendState->id());
backendState->setPeer(frontendState);
@@ -259,6 +275,7 @@ private slots:
// THEN
QCOMPARE(backend.renderStates(m_renderStateManager).size(), 1);
QCOMPARE(backend.renderStates(m_renderStateManager).first(), backendState);
+ QVERIFY(renderer.dirtyBits() != 0);
// WHEN
QScenePropertyChangePtr removeChange(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, frontendState->id()));