From 2f3145d14cf9c13eca96776a05754699e1151678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Thu, 26 Dec 2019 17:55:20 +0100 Subject: Initial creation of RHI plug-in and refactoring Change-Id: Ifbb51003e15f798798040597b5f7224641e8147c Reviewed-by: Paul Lemire --- src/core/qpostman_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/core') diff --git a/src/core/qpostman_p.h b/src/core/qpostman_p.h index 3e5f91742..1e31940b8 100644 --- a/src/core/qpostman_p.h +++ b/src/core/qpostman_p.h @@ -69,7 +69,7 @@ public: virtual bool shouldNotifyFrontend(const QSceneChangePtr &change) = 0; }; -class Q_AUTOTEST_EXPORT QPostman final +class Q_3DCORE_PRIVATE_EXPORT QPostman final : public QObject , public QAbstractPostman { -- cgit v1.2.3 From 9990ee13fd25d1c3c2a50bf3d7303d9fd3fcadd0 Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Mon, 16 Mar 2020 15:43:11 +0100 Subject: Make QAspectJobPrivate::isRequired() const Change-Id: I8747c5714b4a25523835d558fa96888ea0ebcfed Reviewed-by: Mike Krus --- src/core/jobs/qaspectjob.cpp | 2 +- src/core/jobs/qaspectjob_p.h | 2 +- src/core/jobs/task.cpp | 4 ++-- src/core/jobs/task_p.h | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/core') diff --git a/src/core/jobs/qaspectjob.cpp b/src/core/jobs/qaspectjob.cpp index 0a2ee9841..af9ed317e 100644 --- a/src/core/jobs/qaspectjob.cpp +++ b/src/core/jobs/qaspectjob.cpp @@ -67,7 +67,7 @@ QAspectJobPrivate *QAspectJobPrivate::get(QAspectJob *job) return job->d_func(); } -bool QAspectJobPrivate::isRequired() +bool QAspectJobPrivate::isRequired() const { return true; } diff --git a/src/core/jobs/qaspectjob_p.h b/src/core/jobs/qaspectjob_p.h index 63a2cc572..0337fa107 100644 --- a/src/core/jobs/qaspectjob_p.h +++ b/src/core/jobs/qaspectjob_p.h @@ -72,7 +72,7 @@ public: static QAspectJobPrivate *get(QAspectJob *job); - virtual bool isRequired(); + virtual bool isRequired() const; virtual void postFrame(QAspectManager *aspectManager); QVector > m_dependencies; diff --git a/src/core/jobs/task.cpp b/src/core/jobs/task.cpp index f5bfae014..47de41989 100644 --- a/src/core/jobs/task.cpp +++ b/src/core/jobs/task.cpp @@ -68,7 +68,7 @@ AspectTaskRunnable::~AspectTaskRunnable() { } -bool AspectTaskRunnable::isRequired() +bool AspectTaskRunnable::isRequired() const { return m_job ? QAspectJobPrivate::get(m_job.data())->isRequired() : false; } @@ -105,7 +105,7 @@ SyncTaskRunnable::~SyncTaskRunnable() { } -bool SyncTaskRunnable::isRequired() +bool SyncTaskRunnable::isRequired() const { return true; } diff --git a/src/core/jobs/task_p.h b/src/core/jobs/task_p.h index 90d0674b4..73c34534d 100644 --- a/src/core/jobs/task_p.h +++ b/src/core/jobs/task_p.h @@ -77,7 +77,7 @@ public: virtual ~RunnableInterface(); - virtual bool isRequired() = 0; + virtual bool isRequired() const = 0; virtual void run() = 0; virtual int id() = 0; @@ -97,7 +97,7 @@ public: AspectTaskRunnable(QSystemInformationService *service); ~AspectTaskRunnable(); - bool isRequired() override; + bool isRequired() const override; void run() override; void setPooler(QThreadPooler *pooler) override { m_pooler = pooler; } @@ -129,7 +129,7 @@ public: QAtomicInt *atomicCount); ~SyncTaskRunnable(); - bool isRequired() override; + bool isRequired() const override; void run() override; void setPooler(QThreadPooler *pooler) override { m_pooler = pooler; } -- cgit v1.2.3 From e819e8d654fb8d15d24961d56578025c6171610c Mon Sep 17 00:00:00 2001 From: Mike Krus Date: Thu, 19 Mar 2020 17:32:25 +0000 Subject: Fix scene graph dump Might have QNodes "between" parents and child entities. Change-Id: Ie041508ec96c39b779bc75a6ad4d38c604e322e2 Reviewed-by: Paul Lemire --- src/core/nodes/qentity.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/core') diff --git a/src/core/nodes/qentity.cpp b/src/core/nodes/qentity.cpp index 1199dfc4b..7d64d4e70 100644 --- a/src/core/nodes/qentity.cpp +++ b/src/core/nodes/qentity.cpp @@ -79,18 +79,19 @@ QString dumpNode(const Qt3DCore::QEntity *n) { return res; } -QStringList dumpSG(const Qt3DCore::QEntity *n, int level = 0) +QStringList dumpSG(const Qt3DCore::QNode *n, int level = 0) { QStringList reply; - QString res = dumpNode(n); - reply += res.rightJustified(res.length() + level * 2, ' '); + const auto *entity = qobject_cast(n); + if (entity != nullptr) { + QString res = dumpNode(entity); + reply += res.rightJustified(res.length() + level * 2, ' '); + level++; + } const auto children = n->childNodes(); - for (auto *child: children) { - auto *childFGNode = qobject_cast(child); - if (childFGNode != nullptr) - reply += dumpSG(childFGNode, level + 1); - } + for (auto *child: children) + reply += dumpSG(child, level); return reply; } -- cgit v1.2.3 From dd84bf4a99bb181fc1176830b4504d6f023898d8 Mon Sep 17 00:00:00 2001 From: Mike Krus Date: Mon, 30 Mar 2020 17:52:19 +0100 Subject: Don't look up backend node if frontend not updated yet If node parent / child or entity / component changes before the backend nodes where created, records might not be complete yet. Task-number: QTBUG-82269 Change-Id: Id8238410331626130bb71bb1653ac5cb5d5270d4 Reviewed-by: Sean Harmer --- src/core/aspects/qabstractaspect.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/core') diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp index 824434ce6..09f084767 100644 --- a/src/core/aspects/qabstractaspect.cpp +++ b/src/core/aspects/qabstractaspect.cpp @@ -247,6 +247,8 @@ void QAbstractAspectPrivate::syncDirtyFrontEndSubNodes(const QVector std::tuple { const QMetaObject *metaObj = QNodePrivate::get(node)->m_typeInfo; + if (!metaObj) + return {}; const BackendNodeMapperAndInfo backendNodeMapperInfo = mapperForNode(metaObj); const QBackendNodeMapperPtr backendNodeMapper = backendNodeMapperInfo.first; -- cgit v1.2.3 From 2fe146646ccf069a1c9651551c1fb8a41a58eef0 Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Fri, 17 Apr 2020 10:09:50 +0200 Subject: Animations: fix race condition on running clip animators vector Was caused by incorrect dependencies on the jobs. Introduced a clearDependencies on QAspectJobPrivate to clear all dependencies as removeDepencies(emptyVector) only removes null dependencies. Change-Id: I8119a9edaf841db6c5ab2a971dc5640da2192cba Reviewed-by: Mike Krus --- src/core/jobs/qaspectjob_p.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/core') diff --git a/src/core/jobs/qaspectjob_p.h b/src/core/jobs/qaspectjob_p.h index 0337fa107..0c7802b02 100644 --- a/src/core/jobs/qaspectjob_p.h +++ b/src/core/jobs/qaspectjob_p.h @@ -75,6 +75,8 @@ public: virtual bool isRequired() const; virtual void postFrame(QAspectManager *aspectManager); + void clearDependencies() { m_dependencies.clear(); } + QVector > m_dependencies; JobId m_jobId; QString m_jobName; -- cgit v1.2.3 From 50e8d41cc6e23840ba98c8518965f17e75bd29b9 Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Mon, 20 Apr 2020 11:11:59 +0200 Subject: Fix compilation on Windows with -qt3d-simd avx2 Q_3DCORE_PRIVATE_EXPORT for operator* were removed by commit: fa6799f63f3211300705b814b97716ca689d4bfa for Vector3D_SSE and Matrix4x4_SSE. Unfortunately they weren't removed for Matrix4x4_AVX2 which lead to different linkage compile errors. Change-Id: I854fb0cb4409aea1d130e935091533d4e72d6d6e Reviewed-by: Mike Krus --- src/core/transforms/matrix4x4_avx2_p.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/core') diff --git a/src/core/transforms/matrix4x4_avx2_p.h b/src/core/transforms/matrix4x4_avx2_p.h index 0b35f0016..de40ee2a0 100644 --- a/src/core/transforms/matrix4x4_avx2_p.h +++ b/src/core/transforms/matrix4x4_avx2_p.h @@ -485,8 +485,8 @@ public: friend Vector4D operator*(const Vector4D &vector, const Matrix4x4_AVX2 &matrix); friend Vector4D operator*(const Matrix4x4_AVX2 &matrix, const Vector4D &vector); - friend Q_3DCORE_PRIVATE_EXPORT Vector3D operator*(const Vector3D &vector, const Matrix4x4_AVX2 &matrix); - friend Q_3DCORE_PRIVATE_EXPORT Vector3D operator*(const Matrix4x4_AVX2 &matrix, const Vector3D &vector); + friend Vector3D operator*(const Vector3D &vector, const Matrix4x4_AVX2 &matrix); + friend Vector3D operator*(const Matrix4x4_AVX2 &matrix, const Vector3D &vector); friend Q_3DCORE_PRIVATE_EXPORT QDebug operator<<(QDebug dbg, const Matrix4x4_AVX2 &m); -- cgit v1.2.3