diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-10-16 10:52:17 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-10-22 19:51:09 +0200 |
commit | 257c9bc8b53fb62fcad6bb8977b048d3a7563469 (patch) | |
tree | efec0b43b5ab019c9246e4c7bc62be6b1e400b9f /src/render/renderers/opengl/renderer/renderer.cpp | |
parent | c795ccb968da8a7d1ac766553c14df943e4f8fb4 (diff) |
Renderer: build cache data for new RenderViews
Change-Id: I95690444badaf573b9e2775b50c61113de8d1c77
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Diffstat (limited to 'src/render/renderers/opengl/renderer/renderer.cpp')
-rw-r--r-- | src/render/renderers/opengl/renderer/renderer.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp index 474519398..9220a719a 100644 --- a/src/render/renderers/opengl/renderer/renderer.cpp +++ b/src/render/renderers/opengl/renderer/renderer.cpp @@ -1887,14 +1887,17 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs() const int fgBranchCount = m_frameGraphLeaves.size(); for (int i = 0; i < fgBranchCount; ++i) { - RenderViewBuilder builder(m_frameGraphLeaves.at(i), i, this); - builder.setLayerCacheNeedsToBeRebuilt(layersCacheNeedsToBeRebuilt); - builder.setRenderableCacheNeedsToBeRebuilt(renderableDirty); - builder.setComputableCacheNeedsToBeRebuilt(computeableDirty); - builder.setLightGathererCacheNeedsToBeRebuilt(lightsDirty); - builder.setMaterialGathererCacheNeedsToBeRebuilt(materialCacheNeedsToBeRebuilt); - builder.setLightGathererCacheNeedsToBeRebuilt(lightsDirty); - builder.setRenderCommandCacheNeedsToBeRebuilt(renderCommandsDirty); + FrameGraphNode *leaf = m_frameGraphLeaves.at(i); + RenderViewBuilder builder(leaf, i, this); + // If we have a new RV (wasn't in the cache before, then it contains no cached data) + const bool isNewRV = !m_cache.leafNodeCache.contains(leaf); + builder.setLayerCacheNeedsToBeRebuilt(layersCacheNeedsToBeRebuilt || isNewRV); + builder.setRenderableCacheNeedsToBeRebuilt(renderableDirty || isNewRV); + builder.setComputableCacheNeedsToBeRebuilt(computeableDirty || isNewRV); + builder.setLightGathererCacheNeedsToBeRebuilt(lightsDirty || isNewRV); + builder.setMaterialGathererCacheNeedsToBeRebuilt(materialCacheNeedsToBeRebuilt || isNewRV); + builder.setLightGathererCacheNeedsToBeRebuilt(lightsDirty || isNewRV); + builder.setRenderCommandCacheNeedsToBeRebuilt(renderCommandsDirty || isNewRV); builder.prepareJobs(); renderBinJobs.append(builder.buildJobHierachy()); |