summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2020-08-24 14:50:08 +0200
committerPaul Lemire <paul.lemire@kdab.com>2020-08-26 11:24:10 +0200
commit29281788884b69d7e7a86a17efbbe4c62c680e19 (patch)
tree714ab4fad98f9cb2c166c6b6721d4c3088fa34cc
parentcd3abdfe708bc665622021e79f4d1b17fe01e60b (diff)
FilterProximityDistanceJob/FrustumCullingJob: reimplement QAspectJob::isRequired
So that we can benefit from early job discarding. Change-Id: Icf2dfe074d3593932099d6dad80bf761947f3902 Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--src/render/jobs/filterproximitydistancejob.cpp5
-rw-r--r--src/render/jobs/filterproximitydistancejob_p.h1
-rw-r--r--src/render/jobs/frustumcullingjob.cpp5
-rw-r--r--src/render/jobs/frustumcullingjob_p.h1
4 files changed, 12 insertions, 0 deletions
diff --git a/src/render/jobs/filterproximitydistancejob.cpp b/src/render/jobs/filterproximitydistancejob.cpp
index cbbd39b8c..90978d573 100644
--- a/src/render/jobs/filterproximitydistancejob.cpp
+++ b/src/render/jobs/filterproximitydistancejob.cpp
@@ -58,6 +58,11 @@ FilterProximityDistanceJob::~FilterProximityDistanceJob()
--instanceCounter;
}
+bool FilterProximityDistanceJob::isRequired()
+{
+ return hasProximityFilter();
+}
+
void FilterProximityDistanceJob::run()
{
Q_ASSERT(m_manager != nullptr);
diff --git a/src/render/jobs/filterproximitydistancejob_p.h b/src/render/jobs/filterproximitydistancejob_p.h
index fe93ba731..e25fb7812 100644
--- a/src/render/jobs/filterproximitydistancejob_p.h
+++ b/src/render/jobs/filterproximitydistancejob_p.h
@@ -66,6 +66,7 @@ public:
// QAspectJob interface
void run() final;
const std::vector<Entity *> &filteredEntities() const { return m_filteredEntities; }
+ bool isRequired() override;
#if defined (QT_BUILD_INTERNAL)
// For unit testing
diff --git a/src/render/jobs/frustumcullingjob.cpp b/src/render/jobs/frustumcullingjob.cpp
index 17dac3c49..89cb0475d 100644
--- a/src/render/jobs/frustumcullingjob.cpp
+++ b/src/render/jobs/frustumcullingjob.cpp
@@ -115,6 +115,11 @@ void FrustumCullingJob::cullScene(Entity *e, const Plane *planes)
});
}
+bool FrustumCullingJob::isRequired()
+{
+ return m_active;
+}
+
} // Render
} // Qt3DRender
diff --git a/src/render/jobs/frustumcullingjob_p.h b/src/render/jobs/frustumcullingjob_p.h
index 276c0c803..ec31afb8c 100644
--- a/src/render/jobs/frustumcullingjob_p.h
+++ b/src/render/jobs/frustumcullingjob_p.h
@@ -83,6 +83,7 @@ public:
inline bool isActive() const Q_DECL_NOTHROW { return m_active; }
inline void setViewProjection(const Matrix4x4 &viewProjection) Q_DECL_NOTHROW { m_viewProjection = viewProjection; }
inline Matrix4x4 viewProjection() const Q_DECL_NOTHROW { return m_viewProjection; }
+ bool isRequired() override;
const std::vector<Entity *> &visibleEntities() const Q_DECL_NOTHROW { return m_visibleEntities; }