summaryrefslogtreecommitdiffstats
path: root/tests/auto/render
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2017-07-26 16:33:06 +0200
committerPaul Lemire <paul.lemire@kdab.com>2017-07-28 06:11:55 +0000
commite2d7e2108c27573c7811faad951ad6ebd8df403d (patch)
treee8833e37fa57ec7a8d7fabf4166598013d080044 /tests/auto/render
parent721c44edfdedb0360181f8160144709867ed8749 (diff)
Fix: set renderer dirty flag on initialization
Change-Id: I9c164409e3ced5d78182542ae060692e0f65d3ac Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/render')
-rw-r--r--tests/auto/render/buffer/tst_buffer.cpp26
-rw-r--r--tests/auto/render/geometry/tst_geometry.cpp23
-rw-r--r--tests/auto/render/geometryrenderer/tst_geometryrenderer.cpp26
-rw-r--r--tests/auto/render/shader/tst_shader.cpp68
4 files changed, 120 insertions, 23 deletions
diff --git a/tests/auto/render/buffer/tst_buffer.cpp b/tests/auto/render/buffer/tst_buffer.cpp
index 8d23f4184..589c05d7e 100644
--- a/tests/auto/render/buffer/tst_buffer.cpp
+++ b/tests/auto/render/buffer/tst_buffer.cpp
@@ -73,11 +73,14 @@ private Q_SLOTS:
Qt3DRender::Render::Buffer renderBuffer;
Qt3DRender::QBuffer buffer(Qt3DRender::QBuffer::IndexBuffer);
Qt3DRender::Render::BufferManager bufferManager;
+ TestRenderer renderer;
+
buffer.setUsage(Qt3DRender::QBuffer::DynamicCopy);
buffer.setData(QByteArrayLiteral("Corvette"));
buffer.setDataGenerator(Qt3DRender::QBufferDataGeneratorPtr(new TestFunctor(883)));
// WHEN
+ renderBuffer.setRenderer(&renderer);
renderBuffer.setManager(&bufferManager);
simulateInitialization(&buffer, &renderBuffer);
@@ -290,8 +293,10 @@ private Q_SLOTS:
Qt3DRender::Render::Buffer renderBuffer;
Qt3DRender::QBuffer buffer(Qt3DRender::QBuffer::IndexBuffer);
Qt3DRender::Render::BufferManager bufferManager;
+ TestRenderer renderer;
// WHEN
+ renderBuffer.setRenderer(&renderer);
renderBuffer.setManager(&bufferManager);
simulateInitialization(&buffer, &renderBuffer);
@@ -307,6 +312,27 @@ private Q_SLOTS:
QVERIFY(buffers.first() == renderBuffer.peerId());
QVERIFY(bufferManager.takeBuffersToRelease().empty());
}
+
+ void checkSetRendererDirtyOnInitialization()
+ {
+ // GIVEN
+ Qt3DRender::Render::Buffer renderBuffer;
+ Qt3DRender::QBuffer buffer(Qt3DRender::QBuffer::IndexBuffer);
+ Qt3DRender::Render::BufferManager bufferManager;
+ TestRenderer renderer;
+
+ renderBuffer.setRenderer(&renderer);
+ renderBuffer.setManager(&bufferManager);
+
+ // THEN
+ QCOMPARE(renderer.dirtyBits(), 0);
+
+ // WHEN
+ simulateInitialization(&buffer, &renderBuffer);
+
+ // THEN
+ QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::BuffersDirty);
+ }
};
diff --git a/tests/auto/render/geometry/tst_geometry.cpp b/tests/auto/render/geometry/tst_geometry.cpp
index ee80a1ddd..958edfd09 100644
--- a/tests/auto/render/geometry/tst_geometry.cpp
+++ b/tests/auto/render/geometry/tst_geometry.cpp
@@ -54,6 +54,7 @@ private Q_SLOTS:
{
// GIVEN
Qt3DRender::Render::Geometry renderGeometry;
+ TestRenderer renderer;
Qt3DRender::QGeometry geometry;
Qt3DRender::QAttribute attr1;
@@ -66,6 +67,7 @@ private Q_SLOTS:
geometry.addAttribute(&attr3);
geometry.addAttribute(&attr4);
geometry.setBoundingVolumePositionAttribute(&attr1);
+ renderGeometry.setRenderer(&renderer);
// WHEN
simulateInitialization(&geometry, &renderGeometry);
@@ -80,10 +82,31 @@ private Q_SLOTS:
QCOMPARE(geometry.attributes().at(i)->id(), renderGeometry.attributes().at(i));
}
+ void checkSetRendererDirtyOnInitialization()
+ {
+ // GIVEN
+ Qt3DRender::Render::Geometry renderGeometry;
+ Qt3DRender::QGeometry geometry;
+ TestRenderer renderer;
+
+ renderGeometry.setRenderer(&renderer);
+
+ // THEN
+ QCOMPARE(renderer.dirtyBits(), 0);
+
+ // WHEN
+ simulateInitialization(&geometry, &renderGeometry);
+
+ // THEN
+ QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::GeometryDirty);
+ }
+
void checkInitialAndCleanedUpState()
{
// GIVEN
+ TestRenderer renderer;
Qt3DRender::Render::Geometry renderGeometry;
+ renderGeometry.setRenderer(&renderer);
// THEN
QCOMPARE(renderGeometry.isDirty(), false);
diff --git a/tests/auto/render/geometryrenderer/tst_geometryrenderer.cpp b/tests/auto/render/geometryrenderer/tst_geometryrenderer.cpp
index 9b3907360..b0884e422 100644
--- a/tests/auto/render/geometryrenderer/tst_geometryrenderer.cpp
+++ b/tests/auto/render/geometryrenderer/tst_geometryrenderer.cpp
@@ -85,6 +85,7 @@ private Q_SLOTS:
Qt3DRender::QGeometry geometry;
Qt3DRender::QGeometryFactoryPtr factory(new TestFactory(1200));
Qt3DRender::Render::GeometryRendererManager geometryRendererManager;
+ TestRenderer renderer;
geometryRenderer.setInstanceCount(1584);
geometryRenderer.setVertexCount(1609);
@@ -99,6 +100,7 @@ private Q_SLOTS:
geometryRenderer.setEnabled(false);
// WHEN
+ renderGeometryRenderer.setRenderer(&renderer);
renderGeometryRenderer.setManager(&geometryRendererManager);
simulateInitialization(&geometryRenderer, &renderGeometryRenderer);
@@ -144,7 +146,7 @@ private Q_SLOTS:
Qt3DRender::QGeometryRenderer geometryRenderer;
Qt3DRender::QGeometry geometry;
Qt3DRender::QGeometryFactoryPtr factory(new TestFactory(1200));
-
+ TestRenderer renderer;
geometryRenderer.setInstanceCount(454);
geometryRenderer.setVertexCount(350);
@@ -159,6 +161,7 @@ private Q_SLOTS:
geometryRenderer.setEnabled(true);
// WHEN
+ renderGeometryRenderer.setRenderer(&renderer);
renderGeometryRenderer.setManager(&geometryRendererManager);
simulateInitialization(&geometryRenderer, &renderGeometryRenderer);
renderGeometryRenderer.cleanup();
@@ -375,6 +378,27 @@ private Q_SLOTS:
QCOMPARE(renderGeometryRenderer.isEnabled(), true);
QVERIFY(!renderGeometryRenderer.isDirty());
}
+
+ void checkSetRendererDirtyOnInitialization()
+ {
+ // GIVEN
+ Qt3DRender::Render::GeometryRendererManager geometryRendererManager;
+ Qt3DRender::Render::GeometryRenderer renderGeometryRenderer;
+ Qt3DRender::QGeometryRenderer geometryRenderer;
+ TestRenderer renderer;
+
+ renderGeometryRenderer.setRenderer(&renderer);
+ renderGeometryRenderer.setManager(&geometryRendererManager);
+
+ // THEN
+ QCOMPARE(renderer.dirtyBits(), 0);
+
+ // WHEN
+ simulateInitialization(&geometryRenderer, &renderGeometryRenderer);
+
+ // THEN
+ QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::GeometryDirty);
+ }
};
QTEST_APPLESS_MAIN(tst_RenderGeometryRenderer)
diff --git a/tests/auto/render/shader/tst_shader.cpp b/tests/auto/render/shader/tst_shader.cpp
index 0ca7ecc13..067db55e7 100644
--- a/tests/auto/render/shader/tst_shader.cpp
+++ b/tests/auto/render/shader/tst_shader.cpp
@@ -42,6 +42,7 @@ private slots:
void cleanupLeavesACoherentState();
void dealWithPropertyChanges_data();
void dealWithPropertyChanges();
+ void checkSetRendererDirtyOnInitialization();
void allowToChangeShaderCode_data();
void allowToChangeShaderCode();
};
@@ -91,36 +92,40 @@ void tst_RenderShader::hasCoherentInitialState()
void tst_RenderShader::matchesFrontendPeer()
{
- Qt3DRender::QShaderProgram *frontend = createFrontendShader();
- Qt3DRender::Render::Shader *backend = new Qt3DRender::Render::Shader();
+ QScopedPointer<Qt3DRender::QShaderProgram> frontend(createFrontendShader());
+ TestRenderer renderer;
+ Qt3DRender::Render::Shader backend;
- simulateInitialization(frontend, backend);
- QCOMPARE(backend->isLoaded(), false);
- QVERIFY(backend->dna() != 0U);
+ backend.setRenderer(&renderer);
+ simulateInitialization(frontend.data(), &backend);
+ QCOMPARE(backend.isLoaded(), false);
+ QVERIFY(backend.dna() != 0U);
for (int i = Qt3DRender::QShaderProgram::Vertex; i <= Qt3DRender::QShaderProgram::Compute; ++i)
- QCOMPARE(backend->shaderCode()[i],
+ QCOMPARE(backend.shaderCode()[i],
frontend->shaderCode( static_cast<const Qt3DRender::QShaderProgram::ShaderType>(i)));
}
void tst_RenderShader::cleanupLeavesACoherentState()
{
- Qt3DRender::QShaderProgram *frontend = createFrontendShader();
- Qt3DRender::Render::Shader *shader = new Qt3DRender::Render::Shader();
-
- simulateInitialization(frontend, shader);
-
- shader->cleanup();
-
- QCOMPARE(shader->isLoaded(), false);
- QCOMPARE(shader->dna(), 0U);
- QVERIFY(shader->uniformsNames().isEmpty());
- QVERIFY(shader->attributesNames().isEmpty());
- QVERIFY(shader->uniformBlockNames().isEmpty());
- QVERIFY(shader->uniforms().isEmpty());
- QVERIFY(shader->attributes().isEmpty());
- QVERIFY(shader->uniformBlocks().isEmpty());
- QCOMPARE(shader->status(), Qt3DRender::QShaderProgram::NotReady);
+ QScopedPointer<Qt3DRender::QShaderProgram> frontend(createFrontendShader());
+ TestRenderer renderer;
+ Qt3DRender::Render::Shader shader;
+
+ shader.setRenderer(&renderer);
+ simulateInitialization(frontend.data(), &shader);
+
+ shader.cleanup();
+
+ QCOMPARE(shader.isLoaded(), false);
+ QCOMPARE(shader.dna(), 0U);
+ QVERIFY(shader.uniformsNames().isEmpty());
+ QVERIFY(shader.attributesNames().isEmpty());
+ QVERIFY(shader.uniformBlockNames().isEmpty());
+ QVERIFY(shader.uniforms().isEmpty());
+ QVERIFY(shader.attributes().isEmpty());
+ QVERIFY(shader.uniformBlocks().isEmpty());
+ QCOMPARE(shader.status(), Qt3DRender::QShaderProgram::NotReady);
}
void tst_RenderShader::dealWithPropertyChanges_data()
@@ -198,6 +203,25 @@ void tst_RenderShader::dealWithPropertyChanges()
backend.setLoaded(true);
}
+void tst_RenderShader::checkSetRendererDirtyOnInitialization()
+{
+ // GIVEN
+ QScopedPointer<Qt3DRender::QShaderProgram> frontend(createFrontendShader());
+ Qt3DRender::Render::Shader shader;
+ TestRenderer renderer;
+
+ shader.setRenderer(&renderer);
+
+ // THEN
+ QCOMPARE(renderer.dirtyBits(), 0);
+
+ // WHEN
+ simulateInitialization(frontend.data(), &shader);
+
+ // THEN
+ QCOMPARE(renderer.dirtyBits(), Qt3DRender::Render::AbstractRenderer::ShadersDirty);
+}
+
void tst_RenderShader::allowToChangeShaderCode_data()
{
dealWithPropertyChanges_data();