summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-12-06 15:49:36 +0000
committerMike Krus <mike.krus@kdab.com>2019-12-13 21:06:38 +0000
commit22eccf3a95279b85c849c6a49a0a804beb58e2c5 (patch)
treea287d7996a098501de2b167338994853cd7878df /tests
parent7d62c1448721a261c053a3d8adabc21787f1d955 (diff)
Use jobsDone to sync render capture back to frontend
Removes the jobs who's only purpose was to send a message to the frontend. Now added a jobsDone() call to render which is called from main thread when jobs are completed, so it's safe to sync data to frontend. Added a task trace for the backend to front end synching. Change-Id: I587462bea353c5d5a0065b542adcacef4dedb05f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/render/commons/testrenderer.h15
-rw-r--r--tests/auto/render/render.pro1
-rw-r--r--tests/auto/render/renderer/tst_renderer.cpp10
-rw-r--r--tests/auto/render/sendrendercapturejob/sendrendercapturejob.pro12
-rw-r--r--tests/auto/render/sendrendercapturejob/tst_sendrendercapturejob.cpp85
-rw-r--r--tests/manual/rendercapture-qml/main.qml2
6 files changed, 9 insertions, 116 deletions
diff --git a/tests/auto/render/commons/testrenderer.h b/tests/auto/render/commons/testrenderer.h
index f3798e5f8..8cab7edfc 100644
--- a/tests/auto/render/commons/testrenderer.h
+++ b/tests/auto/render/commons/testrenderer.h
@@ -42,33 +42,34 @@ public:
void dumpInfo() const override {}
API api() const override { return AbstractRenderer::OpenGL; }
qint64 time() const override { return 0; }
- void setTime(qint64 time) override { Q_UNUSED(time); }
+ void setTime(qint64 time) override { Q_UNUSED(time) }
void setNodeManagers(Qt3DRender::Render::NodeManagers *m) override { m_managers = m; }
- void setServices(Qt3DCore::QServiceLocator *services) override { Q_UNUSED(services); }
- void setSurfaceExposed(bool exposed) override { Q_UNUSED(exposed); }
+ void setServices(Qt3DCore::QServiceLocator *services) override { Q_UNUSED(services) }
+ void setSurfaceExposed(bool exposed) override { Q_UNUSED(exposed) }
Qt3DRender::Render::NodeManagers *nodeManagers() const override { return m_managers; }
Qt3DCore::QServiceLocator *services() const override { return nullptr; }
void initialize() override {}
void shutdown() override {}
void releaseGraphicsResources() override {}
void render() override {}
- void doRender(bool swapBuffers) override { Q_UNUSED(swapBuffers); }
+ void doRender(bool swapBuffers) override { Q_UNUSED(swapBuffers) }
void cleanGraphicsResources() override {}
bool isRunning() const override { return true; }
bool shouldRender() override { return true; }
void skipNextFrame() override {}
+ void jobsDone(Qt3DCore::QAspectManager *manager) override { Q_UNUSED(manager) }
QVector<Qt3DCore::QAspectJobPtr> preRenderingJobs() override { return QVector<Qt3DCore::QAspectJobPtr>(); }
QVector<Qt3DCore::QAspectJobPtr> renderBinJobs() override { return QVector<Qt3DCore::QAspectJobPtr>(); }
Qt3DCore::QAspectJobPtr pickBoundingVolumeJob() override { return Qt3DCore::QAspectJobPtr(); }
Qt3DCore::QAspectJobPtr rayCastingJob() override { return Qt3DCore::QAspectJobPtr(); }
Qt3DCore::QAspectJobPtr syncLoadingJobs() override { return Qt3DCore::QAspectJobPtr(); }
Qt3DCore::QAspectJobPtr expandBoundingVolumeJob() override { return Qt3DCore::QAspectJobPtr(); }
- void setSceneRoot(Qt3DRender::Render::Entity *root) override { Q_UNUSED(root); }
+ void setSceneRoot(Qt3DRender::Render::Entity *root) override { Q_UNUSED(root) }
Qt3DRender::Render::Entity *sceneRoot() const override { return nullptr; }
Qt3DRender::Render::FrameGraphNode *frameGraphRoot() const override { return nullptr; }
Qt3DCore::QAbstractFrameAdvanceService *frameAdvanceService() const override { return nullptr; }
- void registerEventFilter(Qt3DCore::QEventFilterService *service) override { Q_UNUSED(service); }
- void setSettings(Qt3DRender::Render::RenderSettings *settings) override { Q_UNUSED(settings); }
+ void registerEventFilter(Qt3DCore::QEventFilterService *service) override { Q_UNUSED(service) }
+ void setSettings(Qt3DRender::Render::RenderSettings *settings) override { Q_UNUSED(settings) }
Qt3DRender::Render::RenderSettings *settings() const override { return nullptr; }
void markDirty(Qt3DRender::Render::AbstractRenderer::BackendNodeDirtySet changes, Qt3DRender::Render::BackendNode *node) override;
diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro
index 180ff7ac1..908426570 100644
--- a/tests/auto/render/render.pro
+++ b/tests/auto/render/render.pro
@@ -137,7 +137,6 @@ qtConfig(qt3d-opengl-renderer):qtConfig(private_tests) {
renderviews \
renderqueue \
renderviewbuilder \
- sendrendercapturejob \
gltexture
qtConfig(qt3d-extras) {
diff --git a/tests/auto/render/renderer/tst_renderer.cpp b/tests/auto/render/renderer/tst_renderer.cpp
index a343d6e57..ede95fe14 100644
--- a/tests/auto/render/renderer/tst_renderer.cpp
+++ b/tests/auto/render/renderer/tst_renderer.cpp
@@ -78,16 +78,6 @@ private Q_SLOTS:
1); // RayCastingJob
// WHEN
- renderer.addRenderCaptureSendRequest(Qt3DCore::QNodeId::createId());
- jobs = renderer.preRenderingJobs();
-
- // THEN
- QCOMPARE(jobs.size(),
- 1 + // PickBoundingVolumeJob
- 1 + // RayCastingJob
- 1); // SendRenderCaptureJob
-
- // WHEN
renderer.m_sendBufferCaptureJob->addRequest({Qt3DCore::QNodeId(), {}});
jobs = renderer.preRenderingJobs();
diff --git a/tests/auto/render/sendrendercapturejob/sendrendercapturejob.pro b/tests/auto/render/sendrendercapturejob/sendrendercapturejob.pro
deleted file mode 100644
index 6aff0bebd..000000000
--- a/tests/auto/render/sendrendercapturejob/sendrendercapturejob.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-TEMPLATE = app
-
-TARGET = tst_sendrendercapturejob
-
-QT += core-private 3dcore 3dcore-private 3drender 3drender-private testlib
-
-CONFIG += testcase
-
-SOURCES += tst_sendrendercapturejob.cpp
-
-include(../commons/commons.pri)
-include(../../core/common/common.pri)
diff --git a/tests/auto/render/sendrendercapturejob/tst_sendrendercapturejob.cpp b/tests/auto/render/sendrendercapturejob/tst_sendrendercapturejob.cpp
deleted file mode 100644
index 53a646ccd..000000000
--- a/tests/auto/render/sendrendercapturejob/tst_sendrendercapturejob.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** 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 "Qt3DRender/QRenderAspect"
-#include "Qt3DRender/private/renderer_p.h"
-#include "Qt3DRender/private/nodemanagers_p.h"
-#include "Qt3DRender/private/rendercapture_p.h"
-#include <Qt3DRender/private/sendrendercapturejob_p.h>
-#include "testpostmanarbiter.h"
-
-class tst_SendRenderCaptureJob : public QObject
-{
- Q_OBJECT
-private Q_SLOTS:
- void testSendRenderCaptureRequest()
- {
- // GIVEN
- TestArbiter arbiter;
- Qt3DRender::Render::RenderCapture *renderCapture = new Qt3DRender::Render::RenderCapture;
- Qt3DCore::QBackendNodePrivate::get(renderCapture)->setArbiter(&arbiter);
-
- QImage image(10, 10, QImage::Format_ARGB32);
-
- Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous);
- Qt3DRender::Render::SendRenderCaptureJob job;
-
- Qt3DRender::Render::NodeManagers nodeManagers;
- nodeManagers.frameGraphManager()->appendNode(renderCapture->peerId(), renderCapture);
- renderer.setNodeManagers(&nodeManagers);
- job.setManagers(&nodeManagers);
-
- renderCapture->requestCapture({ 42, QRect() });
- auto request = renderCapture->takeCaptureRequest();
- renderCapture->addRenderCapture(request.captureId, image);
- renderer.addRenderCaptureSendRequest(renderCapture->peerId());
- job.setPendingCaptureRequests(renderer.takePendingRenderCaptureSendRequests());
-
- //WHEN
- job.run();
-
- //THEN
- QCOMPARE(arbiter.events.count(), 1);
- Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
- QCOMPARE(change->subjectId(), renderCapture->peerId());
- QCOMPARE(change->propertyName(), "renderCaptureData");
- auto data = change->value().value<Qt3DRender::RenderCaptureDataPtr>();
- QCOMPARE(data.data()->captureId, 42);
- QCOMPARE(data.data()->image.width(), 10);
- QCOMPARE(data.data()->image.height(), 10);
- QCOMPARE(data.data()->image.format(), QImage::Format_ARGB32);
-
- // renderCapture will be deallocated by the nodeManagers destructor
- renderer.shutdown();
- }
-};
-
-QTEST_APPLESS_MAIN(tst_SendRenderCaptureJob)
-
-#include "tst_sendrendercapturejob.moc"
diff --git a/tests/manual/rendercapture-qml/main.qml b/tests/manual/rendercapture-qml/main.qml
index 9aff1fefe..98b24e251 100644
--- a/tests/manual/rendercapture-qml/main.qml
+++ b/tests/manual/rendercapture-qml/main.qml
@@ -50,7 +50,7 @@
import QtQuick 2.2
import QtQuick.Layouts 1.3
-import QtQuick.Controls 1.4
+import QtQuick.Controls 2.12
import Qt3D.Render 2.9
import QtQuick.Scene3D 2.0