diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2017-07-26 16:33:06 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2017-07-28 06:11:55 +0000 |
commit | e2d7e2108c27573c7811faad951ad6ebd8df403d (patch) | |
tree | e8833e37fa57ec7a8d7fabf4166598013d080044 /tests/auto/render | |
parent | 721c44edfdedb0360181f8160144709867ed8749 (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.cpp | 26 | ||||
-rw-r--r-- | tests/auto/render/geometry/tst_geometry.cpp | 23 | ||||
-rw-r--r-- | tests/auto/render/geometryrenderer/tst_geometryrenderer.cpp | 26 | ||||
-rw-r--r-- | tests/auto/render/shader/tst_shader.cpp | 68 |
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(); |