From 861a73b5328334ebf076d3dd6b2ad6c17bdc0700 Mon Sep 17 00:00:00 2001 From: Mike Krus Date: Wed, 3 Apr 2019 21:20:53 +0100 Subject: Iterate on child handles Resolving list of handles as list of node pointers introduces extra heap memory allocation (via QVector) which can cause locking with high number of threads. Added Entity::traverse() methods to apply a functor to all entitied in a sub-tree. Change-Id: I239ab30ac8ac53ba83666a147015d58465d76eb2 Reviewed-by: Paul Lemire --- src/render/renderers/opengl/renderer/renderer.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/render/renderers/opengl/renderer/renderer.cpp') diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp index e7fa4615c..1f5288d41 100644 --- a/src/render/renderers/opengl/renderer/renderer.cpp +++ b/src/render/renderers/opengl/renderer/renderer.cpp @@ -296,6 +296,8 @@ void Renderer::setNodeManagers(NodeManagers *managers) m_updateShaderDataTransformJob->setManagers(m_nodesManager); m_cleanupJob->setManagers(m_nodesManager); m_calculateBoundingVolumeJob->setManagers(m_nodesManager); + m_expandBoundingVolumeJob->setManagers(m_nodesManager); + m_worldTransformJob->setManagers(m_nodesManager); m_pickBoundingVolumeJob->setManagers(m_nodesManager); m_rayCastingJob->setManagers(m_nodesManager); m_updateWorldBoundingVolumeJob->setManager(m_nodesManager->renderNodesManager()); @@ -305,6 +307,7 @@ void Renderer::setNodeManagers(NodeManagers *managers) m_updateMeshTriangleListJob->setManagers(m_nodesManager); m_filterCompatibleTechniqueJob->setManager(m_nodesManager->techniqueManager()); m_updateEntityLayersJob->setManager(m_nodesManager); + m_updateTreeEnabledJob->setManagers(m_nodesManager); m_updateEntityHierarchyJob->setManager(m_nodesManager); } -- cgit v1.2.3 From 6a8cfd6e52ad340c80b5a8b862b713192cecf791 Mon Sep 17 00:00:00 2001 From: Mike Krus Date: Tue, 28 May 2019 12:05:14 +0100 Subject: Clean up warnings Change-Id: I1ddad305359586481021e85f6e4a470d3a6521b0 Reviewed-by: Paul Lemire --- src/render/renderers/opengl/renderer/renderer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/render/renderers/opengl/renderer/renderer.cpp') diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp index e9c582458..59949ee34 100644 --- a/src/render/renderers/opengl/renderer/renderer.cpp +++ b/src/render/renderers/opengl/renderer/renderer.cpp @@ -192,13 +192,13 @@ Renderer::Renderer(QRenderAspect::RenderType type) , m_updateMeshTriangleListJob(Render::UpdateMeshTriangleListJobPtr::create()) , m_filterCompatibleTechniqueJob(Render::FilterCompatibleTechniqueJobPtr::create()) , m_updateEntityLayersJob(Render::UpdateEntityLayersJobPtr::create()) + , m_updateEntityHierarchyJob(Render::UpdateEntityHierarchyJobPtr::create()) , m_bufferGathererJob(Render::GenericLambdaJobPtr>::create([this] { lookForDirtyBuffers(); }, JobTypes::DirtyBufferGathering)) , m_vaoGathererJob(Render::GenericLambdaJobPtr>::create([this] { lookForAbandonedVaos(); }, JobTypes::DirtyVaoGathering)) , m_textureGathererJob(Render::GenericLambdaJobPtr>::create([this] { lookForDirtyTextures(); }, JobTypes::DirtyTextureGathering)) , m_sendTextureChangesToFrontendJob(Render::GenericLambdaJobPtr>::create([this] { sendTextureChangesToFrontend(); }, JobTypes::SendTextureChangesToFrontend)) , m_introspectShaderJob(Render::GenericLambdaJobPtr>::create([this] { reloadDirtyShaders(); }, JobTypes::DirtyShaderGathering)) , m_syncTextureLoadingJob(Render::GenericLambdaJobPtr>::create([] {}, JobTypes::SyncTextureLoading)) - , m_updateEntityHierarchyJob(Render::UpdateEntityHierarchyJobPtr::create()) , m_ownedContext(false) , m_offscreenHelper(nullptr) #if QT_CONFIG(qt3d_profile_jobs) -- cgit v1.2.3