diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-11-08 11:02:03 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-11-13 07:32:37 +0100 |
commit | 8de836c63eb0a0e484ae4c9e02f0a5f23ef49b65 (patch) | |
tree | 93a67e6c63a799f1fe87e641fa9f754fc2fc568d /src/render | |
parent | 53a780960aa5245eb3e534e6bd0c268c050c52fa (diff) |
FilterProximityJob: only run it if our RV requires proximity filtering
Which is only very rarely required by user applications.
Avoid useless memory allocations every frame
Change-Id: I69ea73ebfffdbe928f99333b4d1dd90cf4ada430
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/jobs/filterproximitydistancejob.cpp | 2 | ||||
-rw-r--r-- | src/render/renderers/opengl/renderer/renderviewbuilder.cpp | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/render/jobs/filterproximitydistancejob.cpp b/src/render/jobs/filterproximitydistancejob.cpp index 80a9e4777..02b712fc2 100644 --- a/src/render/jobs/filterproximitydistancejob.cpp +++ b/src/render/jobs/filterproximitydistancejob.cpp @@ -57,9 +57,9 @@ void FilterProximityDistanceJob::run() // Fill m_filteredEntities // If no filtering needs to be done, this will be the output value // otherwise it will be used as the base list of entities to filter - selectAllEntities(); if (hasProximityFilter()) { + selectAllEntities(); QVector<Entity *> entitiesToFilter = std::move(m_filteredEntities); FrameGraphManager *frameGraphManager = m_manager->frameGraphManager(); EntityManager *entityManager = m_manager->renderNodesManager(); diff --git a/src/render/renderers/opengl/renderer/renderviewbuilder.cpp b/src/render/renderers/opengl/renderer/renderviewbuilder.cpp index 40179fbd6..96fa55c47 100644 --- a/src/render/renderers/opengl/renderer/renderviewbuilder.cpp +++ b/src/render/renderers/opengl/renderer/renderviewbuilder.cpp @@ -310,7 +310,8 @@ public: if (rv->frustumCulling()) renderableEntities = RenderViewBuilder::entitiesInSubset(renderableEntities, m_frustumCullingJob->visibleEntities()); // Filter out entities which didn't satisfy proximity filtering - renderableEntities = RenderViewBuilder::entitiesInSubset(renderableEntities, m_filterProximityJob->filteredEntities()); + if (!rv->proximityFilterIds().empty()) + renderableEntities = RenderViewBuilder::entitiesInSubset(renderableEntities, m_filterProximityJob->filteredEntities()); } // Filter out Render commands for which the Entity wasn't selected because |