diff options
Diffstat (limited to 'src/plugins/renderers/opengl/renderer')
3 files changed, 21 insertions, 15 deletions
diff --git a/src/plugins/renderers/opengl/renderer/renderer.cpp b/src/plugins/renderers/opengl/renderer/renderer.cpp index 7eceaf944..55a9fa4e4 100644 --- a/src/plugins/renderers/opengl/renderer/renderer.cpp +++ b/src/plugins/renderers/opengl/renderer/renderer.cpp @@ -255,9 +255,9 @@ Renderer::Renderer() , m_lightGathererJob(new CachingLightGatherer(&m_cache)) , m_renderableEntityFilterJob(new CachingRenderableEntityFilter(&m_cache)) , m_computableEntityFilterJob(new CachingComputableEntityFilter(&m_cache)) - , m_bufferGathererJob(CreateSynchronizerJobPtr([this] { lookForDirtyBuffers(); }, JobTypes::DirtyBufferGathering)) - , m_vaoGathererJob(CreateSynchronizerJobPtr([this] { lookForAbandonedVaos(); }, JobTypes::DirtyVaoGathering)) - , m_textureGathererJob(CreateSynchronizerJobPtr([this] { lookForDirtyTextures(); }, JobTypes::DirtyTextureGathering)) + , m_bufferGathererJob(CreateSynchronizerJobPtr([this] { lookForDirtyBuffers(); }, JobTypes::DirtyBufferGathering, 0)) + , m_vaoGathererJob(CreateSynchronizerJobPtr([this] { lookForAbandonedVaos(); }, JobTypes::DirtyVaoGathering, 0)) + , m_textureGathererJob(CreateSynchronizerJobPtr([this] { lookForDirtyTextures(); }, JobTypes::DirtyTextureGathering, 0)) , m_introspectShaderJob(CreateSynchronizerPostFramePtr([this] { reloadDirtyShaders(); }, [this] (Qt3DCore::QAspectManager *m) { sendShaderChangesToFrontend(m); }, JobTypes::DirtyShaderGathering)) diff --git a/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp b/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp index 9cd7e27b7..26ad8f0ec 100644 --- a/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp +++ b/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp @@ -534,8 +534,8 @@ RenderViewBuilder::RenderViewBuilder(Render::FrameGraphNode *leafNode, int rende , m_renderViewJob(RenderViewInitializerJobPtr::create()) , m_filterEntityByLayerJob() , m_frustumCullingJob(new Render::FrustumCullingJob()) - , m_syncPreFrustumCullingJob(CreateSynchronizerJobPtr(SyncPreFrustumCulling(m_renderViewJob, m_frustumCullingJob), JobTypes::SyncFrustumCulling)) - , m_setClearDrawBufferIndexJob(CreateSynchronizerJobPtr(SetClearDrawBufferIndex(m_renderViewJob), JobTypes::ClearBufferDrawIndex)) + , m_syncPreFrustumCullingJob(CreateSynchronizerJobPtr(SyncPreFrustumCulling(m_renderViewJob, m_frustumCullingJob), JobTypes::SyncFrustumCulling, renderViewIndex)) + , m_setClearDrawBufferIndexJob(CreateSynchronizerJobPtr(SetClearDrawBufferIndex(m_renderViewJob), JobTypes::ClearBufferDrawIndex, renderViewIndex)) , m_syncFilterEntityByLayerJob() , m_filterProximityJob(Render::FilterProximityDistanceJobPtr::create()) { @@ -637,7 +637,8 @@ void RenderViewBuilder::prepareJobs() m_renderViewCommandBuilderJobs, m_renderer, m_leafNode), - JobTypes::SyncRenderViewPreCommandBuilding); + JobTypes::SyncRenderViewPreCommandBuilding, + m_renderViewIndex); } m_renderViewJob->setRenderer(m_renderer); @@ -675,7 +676,8 @@ void RenderViewBuilder::prepareJobs() m_syncMaterialGathererJob = CreateSynchronizerJobPtr(SyncMaterialParameterGatherer(m_materialGathererJobs, m_renderer, m_leafNode), - JobTypes::SyncMaterialGatherer); + JobTypes::SyncMaterialGatherer, + m_renderViewIndex); } const bool layerCacheNeedsRebuild = m_rebuildFlags.testFlag(RebuildFlag::LayerCacheRebuild); @@ -683,9 +685,10 @@ void RenderViewBuilder::prepareJobs() m_filterEntityByLayerJob = Render::FilterLayerEntityJobPtr::create(); m_filterEntityByLayerJob->setManager(m_renderer->nodeManagers()); m_syncFilterEntityByLayerJob = CreateSynchronizerJobPtr(SyncFilterEntityByLayer(m_filterEntityByLayerJob, - m_renderer, - m_leafNode), - JobTypes::SyncFilterEntityByLayer); + m_renderer, + m_leafNode), + JobTypes::SyncFilterEntityByLayer, + m_renderViewIndex); } m_syncRenderViewPreCommandUpdateJob = CreateSynchronizerJobPtr(SyncRenderViewPreCommandUpdate(m_renderViewJob, @@ -697,12 +700,14 @@ void RenderViewBuilder::prepareJobs() m_renderer, m_leafNode, m_rebuildFlags), - JobTypes::SyncRenderViewPreCommandUpdate); + JobTypes::SyncRenderViewPreCommandUpdate, + m_renderViewIndex); m_syncRenderViewPostCommandUpdateJob = CreateSynchronizerJobPtr(SyncRenderViewPostCommandUpdate(m_renderViewJob, m_renderViewCommandUpdaterJobs, m_renderer), - JobTypes::SyncRenderViewPostCommandUpdate); + JobTypes::SyncRenderViewPostCommandUpdate, + m_renderViewIndex); m_syncRenderViewPostInitializationJob = CreateSynchronizerJobPtr(SyncRenderViewPostInitialization(m_renderViewJob, m_frustumCullingJob, @@ -711,7 +716,8 @@ void RenderViewBuilder::prepareJobs() m_materialGathererJobs, m_renderViewCommandUpdaterJobs, m_renderViewCommandBuilderJobs), - JobTypes::SyncRenderViewInitialization); + JobTypes::SyncRenderViewInitialization, + m_renderViewIndex); } std::vector<Qt3DCore::QAspectJobPtr> RenderViewBuilder::buildJobHierachy() const diff --git a/src/plugins/renderers/opengl/renderer/renderviewbuilder_p.h b/src/plugins/renderers/opengl/renderer/renderviewbuilder_p.h index b7d3ed270..77fec9f0c 100644 --- a/src/plugins/renderers/opengl/renderer/renderviewbuilder_p.h +++ b/src/plugins/renderers/opengl/renderer/renderviewbuilder_p.h @@ -74,8 +74,8 @@ namespace OpenGL { class Renderer; using SynchronizerJobPtr = GenericLambdaJobPtr<std::function<void()>>; -#define CreateSynchronizerJobPtr(lambda, type) \ - SynchronizerJobPtr::create(lambda, type, #type) +#define CreateSynchronizerJobPtr(lambda, type, instance) \ + SynchronizerJobPtr::create(lambda, type, #type, instance) using RenderViewCommandBuilderJobPtr = Render::RenderViewCommandBuilderJobPtr<RenderView, RenderCommand>; using RenderViewCommandUpdaterJobPtr = Render::RenderViewCommandUpdaterJobPtr<RenderView, RenderCommand>; |