summaryrefslogtreecommitdiffstats
path: root/src/render/renderers/opengl/renderer/renderer.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-10-16 10:52:17 +0200
committerPaul Lemire <paul.lemire@kdab.com>2019-10-22 19:51:09 +0200
commit257c9bc8b53fb62fcad6bb8977b048d3a7563469 (patch)
treeefec0b43b5ab019c9246e4c7bc62be6b1e400b9f /src/render/renderers/opengl/renderer/renderer.cpp
parentc795ccb968da8a7d1ac766553c14df943e4f8fb4 (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.cpp19
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());