summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/renderers/opengl/renderer/renderer.cpp8
-rw-r--r--src/plugins/renderers/opengl/renderer/renderer_p.h3
-rw-r--r--src/render/geometry/geometryrenderermanager.cpp18
-rw-r--r--src/render/geometry/geometryrenderermanager_p.h5
-rw-r--r--src/render/jobs/jobs.pri2
-rw-r--r--src/render/jobs/updatemeshtrianglelistjob.cpp126
-rw-r--r--src/render/jobs/updatemeshtrianglelistjob_p.h88
-rw-r--r--tests/auto/render/boundingsphere/tst_boundingsphere.cpp5
-rw-r--r--tests/auto/render/opengl/renderer/tst_renderer.cpp3
-rw-r--r--tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp5
-rw-r--r--tests/auto/render/raycastingjob/tst_raycastingjob.cpp5
-rw-r--r--tests/auto/render/render.pro1
-rw-r--r--tests/auto/render/updatemeshtrianglelistjob/test_scene.qml102
-rw-r--r--tests/auto/render/updatemeshtrianglelistjob/tst_updatemeshtrianglelistjob.cpp354
-rw-r--r--tests/auto/render/updatemeshtrianglelistjob/updatemeshtrianglelistjob.pro18
-rw-r--r--tests/auto/render/updatemeshtrianglelistjob/updatemeshtrianglelistjob.qrc5
16 files changed, 0 insertions, 748 deletions
diff --git a/src/plugins/renderers/opengl/renderer/renderer.cpp b/src/plugins/renderers/opengl/renderer/renderer.cpp
index deb77ee4b..e8e8eb84d 100644
--- a/src/plugins/renderers/opengl/renderer/renderer.cpp
+++ b/src/plugins/renderers/opengl/renderer/renderer.cpp
@@ -261,7 +261,6 @@ Renderer::Renderer(QRenderAspect::RenderType type)
, m_sendBufferCaptureJob(Render::SendBufferCaptureJobPtr::create())
, m_updateSkinningPaletteJob(Render::UpdateSkinningPaletteJobPtr::create())
, m_updateLevelOfDetailJob(Render::UpdateLevelOfDetailJobPtr::create())
- , m_updateMeshTriangleListJob(Render::UpdateMeshTriangleListJobPtr::create())
, m_filterCompatibleTechniqueJob(FilterCompatibleTechniqueJobPtr::create())
, m_updateEntityLayersJob(Render::UpdateEntityLayersJobPtr::create())
, m_lightGathererJob(Render::LightGathererPtr::create())
@@ -308,11 +307,6 @@ Renderer::Renderer(QRenderAspect::RenderType type)
// Ensures all skeletons are loaded before we try to update them
m_updateSkinningPaletteJob->addDependency(m_syncLoadingJobs);
- // All world stuff depends on the RenderEntity's localBoundingVolume
- m_updateLevelOfDetailJob->addDependency(m_updateMeshTriangleListJob);
- m_pickBoundingVolumeJob->addDependency(m_updateMeshTriangleListJob);
- m_rayCastingJob->addDependency(m_updateMeshTriangleListJob);
-
m_introspectShaderJob->addDependency(m_filterCompatibleTechniqueJob);
m_cacheLightsJob->addDependency(m_lightGathererJob);
@@ -393,7 +387,6 @@ void Renderer::setNodeManagers(NodeManagers *managers)
m_updateWorldBoundingVolumeJob->setManager(m_nodesManager->renderNodesManager());
m_updateLevelOfDetailJob->setManagers(m_nodesManager);
m_updateSkinningPaletteJob->setManagers(m_nodesManager);
- m_updateMeshTriangleListJob->setManagers(m_nodesManager);
m_filterCompatibleTechniqueJob->setManager(m_nodesManager->techniqueManager());
m_updateEntityLayersJob->setManager(m_nodesManager);
m_updateTreeEnabledJob->setManagers(m_nodesManager);
@@ -1946,7 +1939,6 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs()
if (dirtyBitsForFrame & AbstractRenderer::GeometryDirty ||
dirtyBitsForFrame & AbstractRenderer::BuffersDirty) {
renderBinJobs.push_back(m_calculateBoundingVolumeJob);
- renderBinJobs.push_back(m_updateMeshTriangleListJob);
}
if (dirtyBitsForFrame & AbstractRenderer::GeometryDirty ||
diff --git a/src/plugins/renderers/opengl/renderer/renderer_p.h b/src/plugins/renderers/opengl/renderer/renderer_p.h
index 8ab56bd01..e1bcce693 100644
--- a/src/plugins/renderers/opengl/renderer/renderer_p.h
+++ b/src/plugins/renderers/opengl/renderer/renderer_p.h
@@ -71,7 +71,6 @@
#include <Qt3DRender/private/platformsurfacefilter_p.h>
#include <Qt3DRender/private/sendbuffercapturejob_p.h>
#include <Qt3DRender/private/genericlambdajob_p.h>
-#include <Qt3DRender/private/updatemeshtrianglelistjob_p.h>
#include <Qt3DRender/private/updateskinningpalettejob_p.h>
#include <Qt3DRender/private/updateentitylayersjob_p.h>
#include <Qt3DRender/private/shaderbuilder_p.h>
@@ -241,7 +240,6 @@ public:
inline UpdateWorldTransformJobPtr updateWorldTransformJob() const { return m_worldTransformJob; }
inline UpdateWorldBoundingVolumeJobPtr updateWorldBoundingVolumeJob() const { return m_updateWorldBoundingVolumeJob; }
inline UpdateLevelOfDetailJobPtr updateLevelOfDetailJob() const { return m_updateLevelOfDetailJob; }
- inline UpdateMeshTriangleListJobPtr updateMeshTriangleListJob() const { return m_updateMeshTriangleListJob; }
inline FilterCompatibleTechniqueJobPtr filterCompatibleTechniqueJob() const { return m_filterCompatibleTechniqueJob; }
inline SynchronizerJobPtr syncLoadingJobs() const { return m_syncLoadingJobs; }
inline UpdateSkinningPaletteJobPtr updateSkinningPaletteJob() const { return m_updateSkinningPaletteJob; }
@@ -398,7 +396,6 @@ private:
SendBufferCaptureJobPtr m_sendBufferCaptureJob;
UpdateSkinningPaletteJobPtr m_updateSkinningPaletteJob;
UpdateLevelOfDetailJobPtr m_updateLevelOfDetailJob;
- UpdateMeshTriangleListJobPtr m_updateMeshTriangleListJob;
FilterCompatibleTechniqueJobPtr m_filterCompatibleTechniqueJob;
UpdateEntityLayersJobPtr m_updateEntityLayersJob;
LightGathererPtr m_lightGathererJob;
diff --git a/src/render/geometry/geometryrenderermanager.cpp b/src/render/geometry/geometryrenderermanager.cpp
index be5cc2487..e51c7caef 100644
--- a/src/render/geometry/geometryrenderermanager.cpp
+++ b/src/render/geometry/geometryrenderermanager.cpp
@@ -65,24 +65,6 @@ QVector<Qt3DCore::QNodeId> GeometryRendererManager::dirtyGeometryRenderers()
return vector;
}
-void GeometryRendererManager::requestTriangleDataRefreshForGeometryRenderer(const Qt3DCore::QNodeId geometryRenderer)
-{
- if (!m_geometryRenderersRequiringTriangleRefresh.contains(geometryRenderer))
- m_geometryRenderersRequiringTriangleRefresh.push_back(geometryRenderer);
-}
-
-bool GeometryRendererManager::isGeometryRendererScheduledForTriangleDataRefresh(const Qt3DCore::QNodeId geometryRenderer)
-{
- return m_geometryRenderersRequiringTriangleRefresh.contains(geometryRenderer);
-}
-
-QVector<Qt3DCore::QNodeId> GeometryRendererManager::geometryRenderersRequiringTriangleDataRefresh()
-{
- QVector<Qt3DCore::QNodeId> vector(m_geometryRenderersRequiringTriangleRefresh);
- m_geometryRenderersRequiringTriangleRefresh.clear();
- return vector;
-}
-
} // namespace Render
} // namespace Qt3DRender
diff --git a/src/render/geometry/geometryrenderermanager_p.h b/src/render/geometry/geometryrenderermanager_p.h
index 7b7b629bd..182e0e718 100644
--- a/src/render/geometry/geometryrenderermanager_p.h
+++ b/src/render/geometry/geometryrenderermanager_p.h
@@ -73,11 +73,6 @@ public:
void addDirtyGeometryRenderer(Qt3DCore::QNodeId bufferId);
QVector<Qt3DCore::QNodeId> dirtyGeometryRenderers();
- void requestTriangleDataRefreshForGeometryRenderer(const Qt3DCore::QNodeId geometryRenderer);
- bool isGeometryRendererScheduledForTriangleDataRefresh(const Qt3DCore::QNodeId geometryRenderer);
- QVector<Qt3DCore::QNodeId> geometryRenderersRequiringTriangleDataRefresh();
-
-
private:
QVector<Qt3DCore::QNodeId> m_dirtyGeometryRenderers;
QVector<Qt3DCore::QNodeId> m_geometryRenderersRequiringTriangleRefresh;
diff --git a/src/render/jobs/jobs.pri b/src/render/jobs/jobs.pri
index 97ad32557..8435ebc0b 100644
--- a/src/render/jobs/jobs.pri
+++ b/src/render/jobs/jobs.pri
@@ -18,7 +18,6 @@ HEADERS += \
$$PWD/updateworldboundingvolumejob_p.h \
$$PWD/updateshaderdatatransformjob_p.h \
$$PWD/updatelevelofdetailjob_p.h \
- $$PWD/updatemeshtrianglelistjob_p.h \
$$PWD/pickboundingvolumeutils_p.h \
$$PWD/updatetreeenabledjob_p.h \
$$PWD/sendbuffercapturejob_p.h \
@@ -43,7 +42,6 @@ SOURCES += \
$$PWD/expandboundingvolumejob.cpp \
$$PWD/updateworldboundingvolumejob.cpp \
$$PWD/updateshaderdatatransformjob.cpp \
- $$PWD/updatemeshtrianglelistjob.cpp \
$$PWD/updatelevelofdetailjob.cpp \
$$PWD/pickboundingvolumeutils.cpp \
$$PWD/updatetreeenabledjob.cpp \
diff --git a/src/render/jobs/updatemeshtrianglelistjob.cpp b/src/render/jobs/updatemeshtrianglelistjob.cpp
deleted file mode 100644
index 4837dcad6..000000000
--- a/src/render/jobs/updatemeshtrianglelistjob.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 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:LGPL$
-** 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 Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** 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-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "updatemeshtrianglelistjob_p.h"
-#include <Qt3DRender/private/job_common_p.h>
-#include <Qt3DRender/private/nodemanagers_p.h>
-#include <Qt3DRender/private/light_p.h>
-#include <Qt3DRender/private/sphere_p.h>
-#include <Qt3DRender/private/attribute_p.h>
-#include <Qt3DRender/private/geometryrenderer_p.h>
-#include <Qt3DRender/private/geometry_p.h>
-#include <Qt3DRender/private/attribute_p.h>
-#include <Qt3DRender/private/buffer_p.h>
-#include <Qt3DRender/private/managers_p.h>
-#include <Qt3DRender/private/buffermanager_p.h>
-#include <Qt3DRender/private/geometryrenderermanager_p.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DRender {
-
-namespace Render {
-
-UpdateMeshTriangleListJob::UpdateMeshTriangleListJob()
- : m_manager(nullptr)
-{
- SET_JOB_RUN_STAT_TYPE(this, JobTypes::UpdateMeshTriangleList, 0)
-}
-
-UpdateMeshTriangleListJob::~UpdateMeshTriangleListJob()
-{
-}
-
-void UpdateMeshTriangleListJob::setManagers(NodeManagers *manager)
-{
- m_manager = manager;
-}
-
-void UpdateMeshTriangleListJob::run()
-{
- GeometryRendererManager *geomRenderermanager = m_manager->geometryRendererManager();
- GeometryManager *geomManager = m_manager->geometryManager();
- BufferManager *bufferManager = m_manager->bufferManager();
- AttributeManager *attributeManager = m_manager->attributeManager();
-
- const QVector<HGeometryRenderer> handles = geomRenderermanager->activeHandles();
-
- for (const HGeometryRenderer &handle : handles) {
- // Look if for the GeometryRender/Geometry the attributes and or buffers are dirty
- // in which case we need to recompute the triangle list
- const GeometryRenderer *geomRenderer = geomRenderermanager->data(handle);
- if (geomRenderer != nullptr) {
- const Geometry *geom = geomManager->lookupResource(geomRenderer->geometryId());
- if (geom != nullptr) {
- const Qt3DCore::QNodeId geomRendererId = geomRenderer->peerId();
- if (!geomRenderermanager->isGeometryRendererScheduledForTriangleDataRefresh(geomRendererId)) {
- // Check if the attributes or buffers are dirty
- bool dirty = geomRenderer->isDirty();
- const auto attrIds = geom->attributes();
- for (const Qt3DCore::QNodeId attrId : attrIds) {
- const Attribute *attr = attributeManager->lookupResource(attrId);
- if (attr != nullptr) {
- dirty |= attr->isDirty();
- if (!dirty) {
- const Buffer *buffer = bufferManager->lookupResource(attr->bufferId());
- if (buffer != nullptr)
- dirty = buffer->isDirty();
- }
- if (dirty)
- break;
- }
- }
- if (dirty)
- m_manager->geometryRendererManager()->requestTriangleDataRefreshForGeometryRenderer(geomRendererId);
- }
- }
- }
- }
-}
-
-NodeManagers *UpdateMeshTriangleListJob::managers() const
-{
- return m_manager;
-}
-
-} // Render
-
-} // Qt3DRender
-
-QT_END_NAMESPACE
diff --git a/src/render/jobs/updatemeshtrianglelistjob_p.h b/src/render/jobs/updatemeshtrianglelistjob_p.h
deleted file mode 100644
index 048f8f01a..000000000
--- a/src/render/jobs/updatemeshtrianglelistjob_p.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 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:LGPL$
-** 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 Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** 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-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3DRENDER_RENDER_UPDATEMESHTRIANGLELISTJOB_H
-#define QT3DRENDER_RENDER_UPDATEMESHTRIANGLELISTJOB_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of other Qt classes. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <Qt3DCore/qaspectjob.h>
-#include <Qt3DRender/private/qt3drender_global_p.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DRender {
-
-namespace Render {
-
-class NodeManagers;
-
-class Q_3DRENDERSHARED_PRIVATE_EXPORT UpdateMeshTriangleListJob : public Qt3DCore::QAspectJob
-{
-public:
- UpdateMeshTriangleListJob();
- ~UpdateMeshTriangleListJob();
-
- void setManagers(NodeManagers *manager);
- void run() final;
-
- NodeManagers *managers() const;
-
-private:
- NodeManagers *m_manager;
-};
-
-typedef QSharedPointer<UpdateMeshTriangleListJob> UpdateMeshTriangleListJobPtr;
-
-} // Render
-
-} // Qt3DRender
-
-QT_END_NAMESPACE
-
-#endif // QT3DRENDER_RENDER_UPDATEMESHTRIANGLELISTJOB_H
diff --git a/tests/auto/render/boundingsphere/tst_boundingsphere.cpp b/tests/auto/render/boundingsphere/tst_boundingsphere.cpp
index 2e3b498a6..7a05addcd 100644
--- a/tests/auto/render/boundingsphere/tst_boundingsphere.cpp
+++ b/tests/auto/render/boundingsphere/tst_boundingsphere.cpp
@@ -48,7 +48,6 @@
#include <Qt3DRender/qrenderaspect.h>
#include <Qt3DRender/private/qrenderaspect_p.h>
#include <Qt3DRender/private/pickboundingvolumejob_p.h>
-#include <Qt3DRender/private/updatemeshtrianglelistjob_p.h>
#include <Qt3DRender/private/updateworldboundingvolumejob_p.h>
#include <Qt3DRender/private/updateworldtransformjob_p.h>
#include <Qt3DRender/private/expandboundingvolumejob_p.h>
@@ -166,10 +165,6 @@ void runRequiredJobs(Qt3DRender::TestAspect *test)
expandBVolume.setRoot(test->sceneRoot());
expandBVolume.setManagers(test->nodeManagers());
expandBVolume.run();
-
- Qt3DRender::Render::UpdateMeshTriangleListJob updateTriangleList;
- updateTriangleList.setManagers(test->nodeManagers());
- updateTriangleList.run();
}
} // anonymous
diff --git a/tests/auto/render/opengl/renderer/tst_renderer.cpp b/tests/auto/render/opengl/renderer/tst_renderer.cpp
index c602e7cf8..d0f1d5c17 100644
--- a/tests/auto/render/opengl/renderer/tst_renderer.cpp
+++ b/tests/auto/render/opengl/renderer/tst_renderer.cpp
@@ -161,7 +161,6 @@ private Q_SLOTS:
1 + // UpdateShaderDataTransform
1 + // ExpandBoundingVolumeJob
1 + // CalculateBoundingVolumeJob
- 1 + // UpdateMeshTriangleListJob
1 + // updateSkinningPaletteJob
1 + // SyncLoadingJobs
1 + // updateLevelOfDetailJob
@@ -289,7 +288,6 @@ private Q_SLOTS:
1 + // cleanupJob
1 + // VAOGatherer
1 + // CalculateBoundingVolumeJob
- 1 + // UpdateMeshTriangleListJob
1 + // updateSkinningPaletteJob
1 + // SyncLoadingJobs
1 + // ExpandBoundingVolumeJob
@@ -313,7 +311,6 @@ private Q_SLOTS:
1 + // updateSkinningPaletteJob
1 + // SyncLoadingJobs
1 + // CalculateBoundingVolumeJob
- 1 + // UpdateMeshTriangleListJob
1 + // BufferGathererJob
singleRenderViewJobCount);
diff --git a/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp b/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp
index ea809cf50..cd984cfac 100644
--- a/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp
+++ b/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp
@@ -54,7 +54,6 @@
#include <Qt3DRender/private/qrenderaspect_p.h>
#include <Qt3DRender/private/pickboundingvolumejob_p.h>
#include <Qt3DRender/private/pickboundingvolumeutils_p.h>
-#include <Qt3DRender/private/updatemeshtrianglelistjob_p.h>
#include <Qt3DRender/private/updateworldboundingvolumejob_p.h>
#include <Qt3DRender/private/updateworldtransformjob_p.h>
#include <Qt3DRender/private/expandboundingvolumejob_p.h>
@@ -193,10 +192,6 @@ void runRequiredJobs(Qt3DRender::TestAspect *test)
expandBVolume.setRoot(test->sceneRoot());
expandBVolume.setManagers(test->nodeManagers());
expandBVolume.run();
-
- Qt3DRender::Render::UpdateMeshTriangleListJob updateTriangleList;
- updateTriangleList.setManagers(test->nodeManagers());
- updateTriangleList.run();
}
void initializePickBoundingVolumeJob(Qt3DRender::Render::PickBoundingVolumeJob *job, Qt3DRender::TestAspect *test)
diff --git a/tests/auto/render/raycastingjob/tst_raycastingjob.cpp b/tests/auto/render/raycastingjob/tst_raycastingjob.cpp
index 2908842eb..61774b1bb 100644
--- a/tests/auto/render/raycastingjob/tst_raycastingjob.cpp
+++ b/tests/auto/render/raycastingjob/tst_raycastingjob.cpp
@@ -50,7 +50,6 @@
#include <Qt3DRender/private/qrenderaspect_p.h>
#include <Qt3DRender/private/raycastingjob_p.h>
#include <Qt3DRender/private/pickboundingvolumeutils_p.h>
-#include <Qt3DRender/private/updatemeshtrianglelistjob_p.h>
#include <Qt3DRender/private/updateworldboundingvolumejob_p.h>
#include <Qt3DRender/private/updateworldtransformjob_p.h>
#include <Qt3DRender/private/expandboundingvolumejob_p.h>
@@ -189,10 +188,6 @@ void runRequiredJobs(Qt3DRender::TestAspect *test)
expandBVolume.setRoot(test->sceneRoot());
expandBVolume.setManagers(test->nodeManagers());
expandBVolume.run();
-
- Qt3DRender::Render::UpdateMeshTriangleListJob updateTriangleList;
- updateTriangleList.setManagers(test->nodeManagers());
- updateTriangleList.run();
}
void initializeJob(Qt3DRender::Render::RayCastingJob *job, Qt3DRender::TestAspect *test)
diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro
index d819cf543..9592b9f6c 100644
--- a/tests/auto/render/render.pro
+++ b/tests/auto/render/render.pro
@@ -134,7 +134,6 @@ qtConfig(qt3d-opengl-renderer):qtConfig(private_tests) {
boundingsphere \
pickboundingvolumejob \
gltfplugins \
- updatemeshtrianglelistjob \
updateshaderdatatransformjob
}
diff --git a/tests/auto/render/updatemeshtrianglelistjob/test_scene.qml b/tests/auto/render/updatemeshtrianglelistjob/test_scene.qml
deleted file mode 100644
index 35292967c..000000000
--- a/tests/auto/render/updatemeshtrianglelistjob/test_scene.qml
+++ /dev/null
@@ -1,102 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 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:BSD$
-** 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.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt3D.Core 2.0
-import Qt3D.Render 2.0
-import Qt3D.Extras 2.0
-import QtQuick.Window 2.0
-
-Entity {
- id: sceneRoot
-
- Window {
- id: win
- width: 800
- height: 800
- visible: true
- }
-
- Camera {
- id: camera
- projectionType: CameraLens.PerspectiveProjection
- fieldOfView: 45
- nearPlane : 0.1
- farPlane : 1000.0
- position: Qt.vector3d( 0.0, 0.0, -40.0 )
- upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
- viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
- }
-
- components: [
- RenderSettings {
- Viewport {
- normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0)
-
- RenderSurfaceSelector {
-
- surface: win
-
- ClearBuffers {
- buffers : ClearBuffers.ColorDepthBuffer
- NoDraw {}
- }
-
- CameraSelector {
- camera: camera
- }
- }
- }
- }
- ]
-
- Entity {
- components: GeometryRenderer { id: cubeMesh; view: CuboidMesh { } }
- }
-}
diff --git a/tests/auto/render/updatemeshtrianglelistjob/tst_updatemeshtrianglelistjob.cpp b/tests/auto/render/updatemeshtrianglelistjob/tst_updatemeshtrianglelistjob.cpp
deleted file mode 100644
index a0af5cea5..000000000
--- a/tests/auto/render/updatemeshtrianglelistjob/tst_updatemeshtrianglelistjob.cpp
+++ /dev/null
@@ -1,354 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Paul Lemire <paul.lemire350@gmail.com>
-** 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/private/updatemeshtrianglelistjob_p.h>
-#include <Qt3DRender/private/nodemanagers_p.h>
-#include <Qt3DRender/private/managers_p.h>
-#include <Qt3DRender/private/geometryrenderermanager_p.h>
-#include <Qt3DRender/private/buffermanager_p.h>
-#include <Qt3DRender/private/loadgeometryjob_p.h>
-#include <Qt3DRender/qrenderaspect.h>
-#include <Qt3DRender/private/qrenderaspect_p.h>
-#include <Qt3DCore/private/qnodevisitor_p.h>
-#include "qmlscenereader.h"
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DRender { // Needs to be in that namespace to be friend with QRenderAspect
-
-QVector<Qt3DCore::QNode *> getNodesForCreation(Qt3DCore::QNode *root)
-{
- using namespace Qt3DCore;
-
- QVector<QNode *> nodes;
- Qt3DCore::QNodeVisitor visitor;
- visitor.traverse(root, [&nodes](QNode *node) {
- nodes.append(node);
-
- // Store the metaobject of the node in the QNode so that we have it available
- // to us during destruction in the QNode destructor. This allows us to send
- // the QNodeId and the metaobject as typeinfo to the backend aspects so they
- // in turn can find the correct QBackendNodeMapper object to handle the destruction
- // of the corresponding backend nodes.
- QNodePrivate *d = QNodePrivate::get(node);
- d->m_typeInfo = const_cast<QMetaObject*>(QNodePrivate::findStaticMetaObject(node->metaObject()));
-
- // Mark this node as having been handled for creation so that it is picked up
- d->m_hasBackendNode = true;
- });
-
- return nodes;
-}
-
-QVector<Qt3DCore::NodeTreeChange> nodeTreeChangesForNodes(const QVector<Qt3DCore::QNode *> nodes)
-{
- QVector<Qt3DCore::NodeTreeChange> nodeTreeChanges;
- nodeTreeChanges.reserve(nodes.size());
-
- for (Qt3DCore::QNode *n : nodes) {
- nodeTreeChanges.push_back({
- n->id(),
- Qt3DCore::QNodePrivate::get(n)->m_typeInfo,
- Qt3DCore::NodeTreeChange::Added,
- n
- });
- }
-
- return nodeTreeChanges;
-}
-
-class TestAspect : public Qt3DRender::QRenderAspect
-{
-public:
- TestAspect(Qt3DCore::QNode *root)
- : Qt3DRender::QRenderAspect(Qt3DRender::QRenderAspect::Synchronous)
- , m_sceneRoot(nullptr)
- {
- Qt3DRender::QRenderAspect::onRegistered();
-
- const QVector<Qt3DCore::QNode *> nodes = getNodesForCreation(root);
- d_func()->setRootAndCreateNodes(qobject_cast<Qt3DCore::QEntity *>(root), nodeTreeChangesForNodes(nodes));
-
- Qt3DRender::Render::Entity *rootEntity = nodeManagers()->lookupResource<Qt3DRender::Render::Entity, Render::EntityManager>(rootEntityId());
- Q_ASSERT(rootEntity);
- m_sceneRoot = rootEntity;
- }
-
- ~TestAspect()
- {
- QRenderAspect::onUnregistered();
- }
-
- void onRegistered() { Qt3DRender::QRenderAspect::onRegistered(); }
- void onUnregistered() { Qt3DRender::QRenderAspect::onUnregistered(); }
-
- Qt3DRender::Render::NodeManagers *nodeManagers() const { return d_func()->m_renderer->nodeManagers(); }
- Qt3DRender::Render::FrameGraphNode *frameGraphRoot() const { return d_func()->m_renderer->frameGraphRoot(); }
- Qt3DRender::Render::RenderSettings *renderSettings() const { return d_func()->m_renderer->settings(); }
- Qt3DRender::Render::Entity *sceneRoot() const { return m_sceneRoot; }
-
-private:
- Qt3DRender::Render::Entity *m_sceneRoot;
-};
-
-} // Qt3DRender
-
-QT_END_NAMESPACE
-
-namespace {
-
-void runRequiredJobs(Qt3DRender::TestAspect *aspect)
-{
- Qt3DRender::Render::GeometryRendererManager *geomRendererManager = aspect->nodeManagers()->geometryRendererManager();
- const QVector<Qt3DCore::QNodeId> dirtyGeometryRenderers = geomRendererManager->dirtyGeometryRenderers();
- QVector<Qt3DCore::QAspectJobPtr> dirtyGeometryRendererJobs;
- dirtyGeometryRendererJobs.reserve(dirtyGeometryRenderers.size());
-
- // Load Geometry
- for (const Qt3DCore::QNodeId geoRendererId : dirtyGeometryRenderers) {
- Qt3DRender::Render::HGeometryRenderer geometryRendererHandle = geomRendererManager->lookupHandle(geoRendererId);
- if (!geometryRendererHandle.isNull()) {
- auto job = Qt3DRender::Render::LoadGeometryJobPtr::create(geometryRendererHandle);
- job->setNodeManagers(aspect->nodeManagers());
- dirtyGeometryRendererJobs.push_back(job);
- }
- }
-}
-
-struct NodeCollection
-{
- explicit NodeCollection(Qt3DRender::TestAspect *aspect, QObject *frontendRoot)
- : geometryRenderers(frontendRoot->findChildren<Qt3DRender::QGeometryRenderer *>())
- , attributes(frontendRoot->findChildren<Qt3DCore::QAttribute *>())
- , buffers(frontendRoot->findChildren<Qt3DCore::QBuffer *>())
- {
- // THEN
- QCOMPARE(aspect->nodeManagers()->geometryManager()->activeHandles().size(), geometryRenderers.size());
- QCOMPARE(aspect->nodeManagers()->attributeManager()->activeHandles().size(), attributes.size());
- QCOMPARE(aspect->nodeManagers()->bufferManager()->activeHandles().size(), buffers.size());
-
- for (const Qt3DRender::QGeometryRenderer *g : qAsConst(geometryRenderers)) {
- Qt3DRender::Render::GeometryRenderer *backend = aspect->nodeManagers()->geometryRendererManager()->lookupResource(g->id());
- QVERIFY(backend != nullptr);
- backendGeometryRenderer.push_back(backend);
- }
-
- for (const Qt3DCore::QAttribute *a : qAsConst(attributes)) {
- Qt3DRender::Render::Attribute *backend = aspect->nodeManagers()->attributeManager()->lookupResource(a->id());
- QVERIFY(backend != nullptr);
- backendAttributes.push_back(backend);
- }
-
- for (const Qt3DCore::QBuffer *b : qAsConst(buffers)) {
- Qt3DRender::Render::Buffer *backend = aspect->nodeManagers()->bufferManager()->lookupResource(b->id());
- QVERIFY(backend != nullptr);
- backendBuffers.push_back(backend);
- }
- }
-
- QList<Qt3DRender::QGeometryRenderer *> geometryRenderers;
- QList<Qt3DCore::QAttribute *> attributes;
- QList<Qt3DCore::QBuffer *> buffers;
-
- QVector<Qt3DRender::Render::GeometryRenderer *> backendGeometryRenderer;
- QVector<Qt3DRender::Render::Attribute *> backendAttributes;
- QVector<Qt3DRender::Render::Buffer *> backendBuffers;
-};
-
-
-} // anonymous
-
-class tst_UpdateMeshTriangleListJob : public QObject
-{
- Q_OBJECT
-
-private Q_SLOTS:
-
- void checkInitialState()
- {
- // GIVEN
- Qt3DRender::Render::UpdateMeshTriangleListJob backendUpdateMeshTriangleListJob;
-
- // THEN
- QVERIFY(backendUpdateMeshTriangleListJob.managers() == nullptr);
- }
-
- void checkInitialize()
- {
- // GIVEN
- Qt3DRender::Render::UpdateMeshTriangleListJob updateMeshTriangleListJob;
- Qt3DRender::Render::NodeManagers managers;
-
- // WHEN
- updateMeshTriangleListJob.setManagers(&managers);
-
- // THEN
- QVERIFY(updateMeshTriangleListJob.managers() == &managers);
- }
-
- void checkRunNoDirtyGeometryRenderNoDirtyAttributesNoDirtyBuffers()
- {
- // GIVEN
- QmlSceneReader sceneReader(QUrl("qrc:/test_scene.qml"));
- QScopedPointer<Qt3DCore::QNode> root(qobject_cast<Qt3DCore::QNode *>(sceneReader.root()));
- QVERIFY(root);
- QScopedPointer<Qt3DRender::TestAspect> test(new Qt3DRender::TestAspect(root.data()));
-
- // Run required jobs to load geometries and meshes
- runRequiredJobs(test.data());
-
- // WHEN
- const NodeCollection collection(test.data(), root.data());
-
- // THEN
- QCOMPARE(collection.geometryRenderers.size(), 1);
- QCOMPARE(collection.attributes.size(), 5);
- QCOMPARE(collection.buffers.size(), 2);
-
- // WHEN
- for (Qt3DRender::Render::GeometryRenderer *g : collection.backendGeometryRenderer)
- g->unsetDirty();
- for (Qt3DRender::Render::Attribute *a : collection.backendAttributes)
- a->unsetDirty();
- for (Qt3DRender::Render::Buffer *b : collection.backendBuffers)
- b->unsetDirty();
-
- Qt3DRender::Render::UpdateMeshTriangleListJob backendUpdateMeshTriangleListJob;
- backendUpdateMeshTriangleListJob.setManagers(test->nodeManagers());
-
- backendUpdateMeshTriangleListJob.run();
-
- // THEN
- QCOMPARE(test->nodeManagers()->geometryRendererManager()->geometryRenderersRequiringTriangleDataRefresh().size(), 0);
- }
-
- void checkRunDirtyGeometryRenderNoDirtyAttributesNoDirtyBuffers()
- {
- // GIVEN
- QmlSceneReader sceneReader(QUrl("qrc:/test_scene.qml"));
- QScopedPointer<Qt3DCore::QNode> root(qobject_cast<Qt3DCore::QNode *>(sceneReader.root()));
- QVERIFY(root);
- QScopedPointer<Qt3DRender::TestAspect> test(new Qt3DRender::TestAspect(root.data()));
-
- // Run required jobs to load geometries and meshes
- runRequiredJobs(test.data());
-
- // WHEN
- const NodeCollection collection(test.data(), root.data());
-
- // THEN
- QCOMPARE(collection.geometryRenderers.size(), 1);
- QCOMPARE(collection.attributes.size(), 5);
- QCOMPARE(collection.buffers.size(), 2);
-
- // WHEN
- for (Qt3DRender::Render::Attribute *a : collection.backendAttributes)
- a->unsetDirty();
- for (Qt3DRender::Render::Buffer *b : collection.backendBuffers)
- b->unsetDirty();
-
- Qt3DRender::Render::UpdateMeshTriangleListJob backendUpdateMeshTriangleListJob;
- backendUpdateMeshTriangleListJob.setManagers(test->nodeManagers());
-
- backendUpdateMeshTriangleListJob.run();
-
- // THEN
- QCOMPARE(test->nodeManagers()->geometryRendererManager()->geometryRenderersRequiringTriangleDataRefresh().size(), 1);
- }
-
- void checkRunDirtyGeometryRenderDirtyAttributesNoDirtyBuffers()
- {
- // GIVEN
- QmlSceneReader sceneReader(QUrl("qrc:/test_scene.qml"));
- QScopedPointer<Qt3DCore::QNode> root(qobject_cast<Qt3DCore::QNode *>(sceneReader.root()));
- QVERIFY(root);
- QScopedPointer<Qt3DRender::TestAspect> test(new Qt3DRender::TestAspect(root.data()));
-
- // Run required jobs to load geometries and meshes
- runRequiredJobs(test.data());
-
- // WHEN
- const NodeCollection collection(test.data(), root.data());
-
- // THEN
- QCOMPARE(collection.geometryRenderers.size(), 1);
- QCOMPARE(collection.attributes.size(), 5);
- QCOMPARE(collection.buffers.size(), 2);
-
- // WHEN
- for (Qt3DRender::Render::Buffer *b : collection.backendBuffers)
- b->unsetDirty();
-
- Qt3DRender::Render::UpdateMeshTriangleListJob backendUpdateMeshTriangleListJob;
- backendUpdateMeshTriangleListJob.setManagers(test->nodeManagers());
-
- backendUpdateMeshTriangleListJob.run();
-
- // THEN
- QCOMPARE(test->nodeManagers()->geometryRendererManager()->geometryRenderersRequiringTriangleDataRefresh().size(), 1);
- }
-
- void checkRunDirtyGeometryRenderDirtyAttributesDirtyBuffers()
- {
- // GIVEN
- QmlSceneReader sceneReader(QUrl("qrc:/test_scene.qml"));
- QScopedPointer<Qt3DCore::QNode> root(qobject_cast<Qt3DCore::QNode *>(sceneReader.root()));
- QVERIFY(root);
- QScopedPointer<Qt3DRender::TestAspect> test(new Qt3DRender::TestAspect(root.data()));
-
- // Run required jobs to load geometries and meshes
- runRequiredJobs(test.data());
-
- // WHEN
- const NodeCollection collection(test.data(), root.data());
-
- // THEN
- QCOMPARE(collection.geometryRenderers.size(), 1);
- QCOMPARE(collection.attributes.size(), 5);
- QCOMPARE(collection.buffers.size(), 2);
-
- // WHEN
- for (Qt3DRender::Render::Buffer *b : collection.backendBuffers)
- b->unsetDirty();
-
- Qt3DRender::Render::UpdateMeshTriangleListJob backendUpdateMeshTriangleListJob;
- backendUpdateMeshTriangleListJob.setManagers(test->nodeManagers());
-
- backendUpdateMeshTriangleListJob.run();
-
- // THEN
- QCOMPARE(test->nodeManagers()->geometryRendererManager()->geometryRenderersRequiringTriangleDataRefresh().size(), 1);
- }
-
-};
-
-QTEST_MAIN(tst_UpdateMeshTriangleListJob)
-
-#include "tst_updatemeshtrianglelistjob.moc"
diff --git a/tests/auto/render/updatemeshtrianglelistjob/updatemeshtrianglelistjob.pro b/tests/auto/render/updatemeshtrianglelistjob/updatemeshtrianglelistjob.pro
deleted file mode 100644
index 499f78c72..000000000
--- a/tests/auto/render/updatemeshtrianglelistjob/updatemeshtrianglelistjob.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-TEMPLATE = app
-
-TARGET = tst_updatemeshtrianglelistjob
-
-QT += 3dcore 3dcore-private 3drender 3drender-private testlib
-
-CONFIG += testcase
-
-SOURCES += tst_updatemeshtrianglelistjob.cpp
-
-include(../../core/common/common.pri)
-include(../commons/commons.pri)
-include(../qmlscenereader/qmlscenereader.pri)
-# Extra dependencies to build test scenes needed by the tests
-QT += quick 3dquick 3dquick-private 3dextras 3dquickextras
-
-RESOURCES += \
- updatemeshtrianglelistjob.qrc
diff --git a/tests/auto/render/updatemeshtrianglelistjob/updatemeshtrianglelistjob.qrc b/tests/auto/render/updatemeshtrianglelistjob/updatemeshtrianglelistjob.qrc
deleted file mode 100644
index 6a6a0433e..000000000
--- a/tests/auto/render/updatemeshtrianglelistjob/updatemeshtrianglelistjob.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>test_scene.qml</file>
- </qresource>
-</RCC>