summaryrefslogtreecommitdiffstats
path: root/tests/auto/render/renderviews
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2018-03-12 08:32:35 +0100
committerPaul Lemire <paul.lemire@kdab.com>2020-02-05 11:33:49 +0100
commit0e115ff000fb294de8519bf5b39beee0d6bfa605 (patch)
treec66c1f19ad5e4b7fc4f3be7951fa74d1d4df64bb /tests/auto/render/renderviews
parentf1f387c22dac8748a7edb1f4aa1ea6dac7dfbdfd (diff)
Make the OpenGL renderer a plugin
By default the QRenderAspect will try to load this plugin Change-Id: Ie55e207fb8e6d0b64f717bbb99699eb669eaa3f2 Task-number: QTBUG-61151 Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'tests/auto/render/renderviews')
-rw-r--r--tests/auto/render/renderviews/renderviews.pro12
-rw-r--r--tests/auto/render/renderviews/tst_renderviews.cpp552
2 files changed, 0 insertions, 564 deletions
diff --git a/tests/auto/render/renderviews/renderviews.pro b/tests/auto/render/renderviews/renderviews.pro
deleted file mode 100644
index 046c00696..000000000
--- a/tests/auto/render/renderviews/renderviews.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-TEMPLATE = app
-
-TARGET = tst_renderviews
-
-QT += 3dcore 3dcore-private 3drender 3drender-private testlib
-
-CONFIG += testcase
-
-SOURCES += tst_renderviews.cpp
-
-include(../../core/common/common.pri)
-include(../commons/commons.pri)
diff --git a/tests/auto/render/renderviews/tst_renderviews.cpp b/tests/auto/render/renderviews/tst_renderviews.cpp
deleted file mode 100644
index b434fe83a..000000000
--- a/tests/auto/render/renderviews/tst_renderviews.cpp
+++ /dev/null
@@ -1,552 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QTest>
-#include <qbackendnodetester.h>
-#include <private/renderview_p.h>
-#include <private/qframeallocator_p.h>
-#include <private/qframeallocator_p_p.h>
-#include <private/memorybarrier_p.h>
-#include <private/renderviewjobutils_p.h>
-#include <private/rendercommand_p.h>
-#include <testpostmanarbiter.h>
-#include <testrenderer.h>
-#include <private/shader_p.h>
-#include <private/glresourcemanagers_p.h>
-#include <Qt3DRender/qshaderprogram.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DRender {
-
-namespace Render {
-
-namespace {
-
-void compareShaderParameterPacks(const ShaderParameterPack &t1,
- const ShaderParameterPack &t2)
-{
- const PackUniformHash hash1 = t1.uniforms();
- const PackUniformHash hash2 = t2.uniforms();
-
- QCOMPARE(hash1.keys.size(), hash2.keys.size());
-
- for (int i = 0, m = hash1.keys.size(); i < m; ++i) {
- const int key = hash1.keys.at(i);
- QCOMPARE(hash1.value(key), hash2.value(key));
- }
-}
-
-} // anonymous
-
-class tst_RenderViews : public Qt3DCore::QBackendNodeTester
-{
- Q_OBJECT
-
-private Q_SLOTS:
-
- void checkRenderViewSizeFitsWithAllocator()
- {
- QSKIP("Allocated Disabled");
- QVERIFY(sizeof(RenderView) <= 192);
- QVERIFY(sizeof(RenderView::InnerData) <= 192);
- }
-
- void checkRenderViewInitialState()
- {
- // GIVEN
- RenderView renderView;
-
- // THEN
- QCOMPARE(renderView.memoryBarrier(), QMemoryBarrier::None);
- }
-
- void checkMemoryBarrierInitialization()
- {
- // GIVEN
- RenderView renderView;
-
- // THEN
- QCOMPARE(renderView.memoryBarrier(), QMemoryBarrier::None);
-
- // WHEN
- const QMemoryBarrier::Operations barriers(QMemoryBarrier::BufferUpdate|QMemoryBarrier::ShaderImageAccess);
- renderView.setMemoryBarrier(barriers);
-
- // THEN
- QCOMPARE(renderView.memoryBarrier(), barriers);
- }
-
- void checkSetRenderViewConfig()
- {
- TestRenderer renderer;
- {
- // GIVEN
- const QMemoryBarrier::Operations barriers(QMemoryBarrier::AtomicCounter|QMemoryBarrier::ShaderStorage);
- Qt3DRender::QMemoryBarrier frontendBarrier;
- FrameGraphManager frameGraphManager;
- MemoryBarrier backendBarrier;
- RenderView renderView;
- // setRenderViewConfigFromFrameGraphLeafNode assumes node has a manager
- backendBarrier.setFrameGraphManager(&frameGraphManager);
- backendBarrier.setRenderer(&renderer);
-
- // WHEN
- frontendBarrier.setWaitOperations(barriers);
- simulateInitializationSync(&frontendBarrier, &backendBarrier);
-
- // THEN
- QCOMPARE(renderView.memoryBarrier(), QMemoryBarrier::None);
- QCOMPARE(backendBarrier.waitOperations(), barriers);
-
- // WHEN
- Qt3DRender::Render::setRenderViewConfigFromFrameGraphLeafNode(&renderView, &backendBarrier);
-
- // THEN
- QCOMPARE(backendBarrier.waitOperations(), renderView.memoryBarrier());
- }
- // TO DO: Complete tests for other framegraph node types
- }
-
- void checkRenderCommandBackToFrontSorting()
- {
- // GIVEN
- Qt3DRender::Render::NodeManagers nodeManagers;
- Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous);
- RenderView renderView;
- QVector<RenderCommand> rawCommands;
- QVector<QSortPolicy::SortType> sortTypes;
-
- renderer.setNodeManagers(&nodeManagers);
- renderView.setRenderer(&renderer);
-
- sortTypes.push_back(QSortPolicy::BackToFront);
-
- for (int i = 0; i < 200; ++i) {
- RenderCommand c;
- c.m_depth = float(i);
- rawCommands.push_back(c);
- }
-
- // WHEN
- renderView.addSortType(sortTypes);
- renderView.setCommands(rawCommands);
- renderView.sort();
-
- // THEN
- const QVector<RenderCommand> sortedCommands = renderView.commands();
- QCOMPARE(rawCommands.size(), sortedCommands.size());
- for (int j = 1; j < sortedCommands.size(); ++j)
- QVERIFY(sortedCommands.at(j - 1).m_depth > sortedCommands.at(j).m_depth);
-
- // RenderCommands are deleted by RenderView dtor
- renderer.shutdown();
- }
-
- void checkRenderCommandMaterialSorting()
- {
- // GIVEN
- Qt3DRender::Render::NodeManagers nodeManagers;
- Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous);
- RenderView renderView;
- QVector<RenderCommand> rawCommands;
- QVector<QSortPolicy::SortType> sortTypes;
-
- renderer.setNodeManagers(&nodeManagers);
- renderView.setRenderer(&renderer);
-
- sortTypes.push_back(QSortPolicy::Material);
-
- GLShader *dnas[5] = {
- reinterpret_cast<GLShader *>(0x250),
- reinterpret_cast<GLShader *>(0x500),
- reinterpret_cast<GLShader *>(0x1000),
- reinterpret_cast<GLShader *>(0x1500),
- reinterpret_cast<GLShader *>(0x2000)
- };
-
- for (int i = 0; i < 20; ++i) {
- RenderCommand c;
- c.m_glShader = dnas[i % 5];
- rawCommands.push_back(c);
- }
-
- // WHEN
- renderView.addSortType(sortTypes);
- renderView.setCommands(rawCommands);
- renderView.sort();
-
- // THEN
- const QVector<RenderCommand> sortedCommands = renderView.commands();
- QCOMPARE(rawCommands.size(), sortedCommands.size());
- GLShader *targetShader;
-
- for (int j = 0; j < sortedCommands.size(); ++j) {
-
- if (j % 4 == 0) {
- targetShader = sortedCommands.at(j).m_glShader;
- if (j > 0)
- QVERIFY(targetShader != sortedCommands.at(j - 1).m_glShader);
- }
- QCOMPARE(targetShader, sortedCommands.at(j).m_glShader);
- }
-
- // RenderCommands are deleted by RenderView dtor
- renderer.shutdown();
- }
-
- void checkRenderViewUniformMinification_data()
- {
- QTest::addColumn<QVector<QShaderProgram*>>("shaders");
- QTest::addColumn<QVector<ShaderParameterPack>>("rawParameters");
- QTest::addColumn<QVector<ShaderParameterPack>>("expectedMinimizedParameters");
-
- Qt3DCore::QNodeId fakeTextureNodeId = Qt3DCore::QNodeId::createId();
-
- ShaderParameterPack pack1;
- pack1.setUniform(1, UniformValue(883));
- pack1.setUniform(2, UniformValue(1584.0f));
- pack1.setTexture(3, 0, fakeTextureNodeId);
-
- QShaderProgram *shader1 = new QShaderProgram();
- QShaderProgram *shader2 = new QShaderProgram();
-
- shader1->setShaderCode(QShaderProgram::Vertex, QByteArrayLiteral("1"));
- shader2->setShaderCode(QShaderProgram::Vertex, QByteArrayLiteral("2"));
-
- ShaderParameterPack minifiedPack1;
-
- QTest::newRow("NoMinification")
- << (QVector<QShaderProgram*>() << shader1 << shader2)
- << (QVector<ShaderParameterPack>() << pack1 << pack1)
- << (QVector<ShaderParameterPack>() << pack1 << pack1);
-
- QTest::newRow("SingleShaderMinified")
- << (QVector<QShaderProgram*>() << shader1 << shader1 << shader1)
- << (QVector<ShaderParameterPack>() << pack1 << pack1 << pack1)
- << (QVector<ShaderParameterPack>() << pack1 << minifiedPack1 << minifiedPack1);
-
- QTest::newRow("MultipleShadersMinified")
- << (QVector<QShaderProgram*>() << shader1 << shader1 << shader1 << shader2 << shader2 << shader2)
- << (QVector<ShaderParameterPack>() << pack1 << pack1 << pack1 << pack1 << pack1 << pack1)
- << (QVector<ShaderParameterPack>() << pack1 << minifiedPack1 << minifiedPack1 << pack1 << minifiedPack1 << minifiedPack1);
- }
-
- void checkRenderViewUniformMinification()
- {
- QFETCH(QVector<QShaderProgram*>, shaders);
- QFETCH(QVector<ShaderParameterPack>, rawParameters);
- QFETCH(QVector<ShaderParameterPack>, expectedMinimizedParameters);
-
- Qt3DRender::Render::NodeManagers nodeManagers;
- Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous);
- renderer.setNodeManagers(&nodeManagers);
-
- GLShaderManager *shaderManager = renderer.glResourceManagers()->glShaderManager();
- for (int i = 0, m = shaders.size(); i < m; ++i) {
- Shader* backend = new Shader();
- backend->setRenderer(&renderer);
- simulateInitializationSync(shaders.at(i), backend);
- shaderManager->createOrAdoptExisting(backend);
- }
-
- RenderView renderView;
- QVector<RenderCommand> rawCommands;
- renderView.setRenderer(&renderer);
-
- for (int i = 0, m = shaders.size(); i < m; ++i) {
- RenderCommand c;
- c.m_shaderId = shaders.at(i)->id();
- c.m_glShader = shaderManager->lookupResource(c.m_shaderId);
- c.m_parameterPack = rawParameters.at(i);
- rawCommands.push_back(c);
- }
-
- // WHEN
- renderView.setCommands(rawCommands);
- renderView.addSortType((QVector<QSortPolicy::SortType>() << QSortPolicy::Uniform));
- renderView.sort();
-
- // THEN
- const QVector<RenderCommand> sortedCommands = renderView.commands();
- QCOMPARE(rawCommands, sortedCommands);
-
- for (int i = 0, m = shaders.size(); i < m; ++i) {
- const RenderCommand c = sortedCommands.at(i);
- QCOMPARE(c.m_shaderId, shaders.at(i)->id());
- compareShaderParameterPacks(c.m_parameterPack, expectedMinimizedParameters.at(i));
- }
-
- renderer.shutdown();
- }
-
-
- void checkRenderCommandFrontToBackSorting()
- {
- // GIVEN
- Qt3DRender::Render::NodeManagers nodeManagers;
- Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous);
- RenderView renderView;
- QVector<RenderCommand> rawCommands;
- QVector<QSortPolicy::SortType> sortTypes;
-
- renderer.setNodeManagers(&nodeManagers);
- renderView.setRenderer(&renderer);
-
- sortTypes.push_back(QSortPolicy::FrontToBack);
-
- for (int i = 0; i < 200; ++i) {
- RenderCommand c;
- c.m_depth = float(i);
- rawCommands.push_back(c);
- }
-
- // WHEN
- renderView.addSortType(sortTypes);
- renderView.setCommands(rawCommands);
- renderView.sort();
-
- // THEN
- const QVector<RenderCommand> sortedCommands = renderView.commands();
- QCOMPARE(rawCommands.size(), sortedCommands.size());
- for (int j = 1; j < sortedCommands.size(); ++j)
- QVERIFY(sortedCommands.at(j - 1).m_depth < sortedCommands.at(j).m_depth);
-
- // RenderCommands are deleted by RenderView dtor
- renderer.shutdown();
- }
-
- void checkRenderCommandStateCostSorting()
- {
- // GIVEN
- Qt3DRender::Render::NodeManagers nodeManagers;
- Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous);
- RenderView renderView;
- QVector<RenderCommand> rawCommands;
- QVector<QSortPolicy::SortType> sortTypes;
-
- renderer.setNodeManagers(&nodeManagers);
- renderView.setRenderer(&renderer);
-
- sortTypes.push_back(QSortPolicy::StateChangeCost);
-
- for (int i = 0; i < 200; ++i) {
- RenderCommand c;
- c.m_changeCost = i;
- rawCommands.push_back(c);
- }
-
- // WHEN
- renderView.addSortType(sortTypes);
- renderView.setCommands(rawCommands);
- renderView.sort();
-
- // THEN
- const QVector<RenderCommand> sortedCommands = renderView.commands();
- QCOMPARE(rawCommands.size(), sortedCommands.size());
- for (int j = 1; j < sortedCommands.size(); ++j)
- QVERIFY(sortedCommands.at(j - 1).m_changeCost > sortedCommands.at(j).m_changeCost);
-
- // RenderCommands are deleted by RenderView dtor
- renderer.shutdown();
- }
-
- void checkRenderCommandCombinedStateMaterialDepthSorting()
- {
- // GIVEN
- Qt3DRender::Render::NodeManagers nodeManagers;
- Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous);
- RenderView renderView;
- QVector<RenderCommand> rawCommands;
- QVector<QSortPolicy::SortType> sortTypes;
-
- renderer.setNodeManagers(&nodeManagers);
- renderView.setRenderer(&renderer);
-
- sortTypes.push_back(QSortPolicy::StateChangeCost);
- sortTypes.push_back(QSortPolicy::Material);
- sortTypes.push_back(QSortPolicy::BackToFront);
-
- GLShader *dna[5] = {
- reinterpret_cast<GLShader *>(0x250),
- reinterpret_cast<GLShader *>(0x500),
- reinterpret_cast<GLShader *>(0x1000),
- reinterpret_cast<GLShader *>(0x1500),
- reinterpret_cast<GLShader *>(0x2000)
- };
-
- float depth[3] = {
- 10.0f,
- 25.0f,
- 30.0f
- };
-
- int stateChangeCost[2] = {
- 100,
- 200
- };
-
- auto buildRC = [] (GLShader *dna, float depth, int changeCost) {
- RenderCommand c;
- c.m_glShader = dna;
- c.m_depth = depth;
- c.m_changeCost = changeCost;
- return c;
- };
-
- RenderCommand c5 = buildRC(dna[3], depth[1], stateChangeCost[1]);
- RenderCommand c3 = buildRC(dna[3], depth[0], stateChangeCost[1]);
- RenderCommand c4 = buildRC(dna[2], depth[1], stateChangeCost[1]);
- RenderCommand c8 = buildRC(dna[1], depth[1], stateChangeCost[1]);
- RenderCommand c0 = buildRC(dna[0], depth[2], stateChangeCost[1]);
-
- RenderCommand c2 = buildRC(dna[2], depth[2], stateChangeCost[0]);
- RenderCommand c9 = buildRC(dna[2], depth[0], stateChangeCost[0]);
- RenderCommand c1 = buildRC(dna[1], depth[0], stateChangeCost[0]);
- RenderCommand c7 = buildRC(dna[0], depth[2], stateChangeCost[0]);
- RenderCommand c6 = buildRC(dna[0], depth[1], stateChangeCost[0]);
-
- rawCommands << c0 << c1 << c2 << c3 << c4 << c5 << c6 << c7 << c8 << c9;
-
- // WHEN
- renderView.addSortType(sortTypes);
- renderView.setCommands(rawCommands);
- renderView.sort();
-
- // THEN
- const QVector<RenderCommand> sortedCommands = renderView.commands();
- QCOMPARE(rawCommands.size(), sortedCommands.size());
-
- // Ordered by higher state, higher shaderDNA and higher depth
- QCOMPARE(c0, sortedCommands.at(4));
- QCOMPARE(c3, sortedCommands.at(1));
- QCOMPARE(c4, sortedCommands.at(2));
- QCOMPARE(c5, sortedCommands.at(0));
- QCOMPARE(c8, sortedCommands.at(3));
-
- QCOMPARE(c1, sortedCommands.at(7));
- QCOMPARE(c2, sortedCommands.at(5));
- QCOMPARE(c6, sortedCommands.at(9));
- QCOMPARE(c7, sortedCommands.at(8));
- QCOMPARE(c9, sortedCommands.at(6));
-
- // RenderCommands are deleted by RenderView dtor
- renderer.shutdown();
- }
-
- void checkRenderCommandTextureSorting()
- {
- // GIVEN
- RenderView renderView;
- QVector<QSortPolicy::SortType> sortTypes;
-
- sortTypes.push_back(QSortPolicy::Texture);
-
-
- Qt3DCore::QNodeId tex1 = Qt3DCore::QNodeId::createId();
- Qt3DCore::QNodeId tex2 = Qt3DCore::QNodeId::createId();
- Qt3DCore::QNodeId tex3 = Qt3DCore::QNodeId::createId();
- Qt3DCore::QNodeId tex4 = Qt3DCore::QNodeId::createId();
-
- RenderCommand a;
- {
- ShaderParameterPack pack;
- pack.setTexture(0, 0, tex1);
- pack.setTexture(1, 0, tex3);
- pack.setTexture(2, 0, tex4);
- pack.setTexture(3, 0, tex2);
- a.m_parameterPack = pack;
- }
- RenderCommand b;
- RenderCommand c;
- {
- ShaderParameterPack pack;
- pack.setTexture(0, 0, tex1);
- pack.setTexture(3, 0, tex2);
- c.m_parameterPack = pack;
- }
- RenderCommand d;
- {
- ShaderParameterPack pack;
- pack.setTexture(1, 0, tex3);
- pack.setTexture(2, 0, tex4);
- d.m_parameterPack = pack;
- }
- RenderCommand e;
- {
- ShaderParameterPack pack;
- pack.setTexture(3, 0, tex2);
- e.m_parameterPack = pack;
- }
- RenderCommand f;
- {
- ShaderParameterPack pack;
- pack.setTexture(3, 0, tex2);
- f.m_parameterPack = pack;
- }
- RenderCommand g;
- {
- ShaderParameterPack pack;
- pack.setTexture(0, 0, tex1);
- pack.setTexture(1, 0, tex3);
- pack.setTexture(2, 0, tex4);
- pack.setTexture(3, 0, tex2);
- g.m_parameterPack = pack;
- }
-
- // WHEN
- QVector<RenderCommand> rawCommands = {a, b, c, d, e, f, g};
- renderView.addSortType(sortTypes);
- renderView.setCommands(rawCommands);
- renderView.sort();
-
- // THEN
- const QVector<RenderCommand> sortedCommands = renderView.commands();
- QCOMPARE(rawCommands.size(), sortedCommands.size());
- QCOMPARE(sortedCommands.at(0), a);
- QCOMPARE(sortedCommands.at(1), g);
- QCOMPARE(sortedCommands.at(2), d);
- QCOMPARE(sortedCommands.at(3), c);
- QCOMPARE(sortedCommands.at(4), e);
- QCOMPARE(sortedCommands.at(5), f);
- QCOMPARE(sortedCommands.at(6), b);
- // RenderCommands are deleted by RenderView dtor
- }
-private:
-};
-
-} // Render
-
-} // Qt3DRender
-
-QT_END_NAMESPACE
-
-//APPLESS_
-QTEST_MAIN(Qt3DRender::Render::tst_RenderViews)
-
-#include "tst_renderviews.moc"