summaryrefslogtreecommitdiffstats
path: root/src/render/renderers/opengl/renderer/renderer.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-04-14 17:26:22 +0200
committerFrederik Gladhorn <frederik.gladhorn@qt.io>2019-04-15 14:30:59 +0000
commitbad9cd31fc9f3bb911f59439c0468f8dc7170646 (patch)
tree60d5a6afcd93a3adeb2f324dfa7d4e8bab6a8735 /src/render/renderers/opengl/renderer/renderer.cpp
parent100175e92d6adb346169eda0392b9485ca41a905 (diff)
parent276be935bfeccde733bacd4267abeb978f6efda5 (diff)
Merge remote-tracking branch origin/5.13 into dev
Diffstat (limited to 'src/render/renderers/opengl/renderer/renderer.cpp')
-rw-r--r--src/render/renderers/opengl/renderer/renderer.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp
index a3c0b93da..012ec7056 100644
--- a/src/render/renderers/opengl/renderer/renderer.cpp
+++ b/src/render/renderers/opengl/renderer/renderer.cpp
@@ -1656,7 +1656,6 @@ Renderer::ViewSubmissionResultData Renderer::submitRenderViews(const QVector<Ren
ViewSubmissionResultData resultData;
resultData.lastBoundFBOId = lastBoundFBOId;
resultData.surface = lastUsedSurface;
-
return resultData;
}
@@ -1796,14 +1795,16 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs()
renderBinJobs.push_back(m_textureGathererJob);
- // Layer cache is dependent on layers, layer filters and the enabled flag
- // on entities
+ // Layer cache is dependent on layers, layer filters (hence FG structure
+ // changes) and the enabled flag on entities
+ const bool frameGraphDirty = dirtyBitsForFrame & AbstractRenderer::FrameGraphDirty;
const bool layersDirty = dirtyBitsForFrame & AbstractRenderer::LayersDirty;
- const bool layersCacheNeedsToBeRebuilt = layersDirty || entitiesEnabledDirty;
+ const bool layersCacheNeedsToBeRebuilt = layersDirty || entitiesEnabledDirty || frameGraphDirty;
const bool materialDirty = dirtyBitsForFrame & AbstractRenderer::MaterialDirty;
const bool lightsDirty = dirtyBitsForFrame & AbstractRenderer::LightsDirty;
const bool computeableDirty = dirtyBitsForFrame & AbstractRenderer::ComputeDirty;
const bool renderableDirty = dirtyBitsForFrame & AbstractRenderer::GeometryDirty;
+ const bool materialCacheNeedsToBeRebuilt = materialDirty || frameGraphDirty;
// Rebuild Entity Layers list if layers are dirty
if (layersDirty)
@@ -1830,11 +1831,10 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs()
for (int i = 0; i < fgBranchCount; ++i) {
RenderViewBuilder builder(fgLeaves.at(i), i, this);
builder.setLayerCacheNeedsToBeRebuilt(layersCacheNeedsToBeRebuilt);
- builder.setMaterialGathererCacheNeedsToBeRebuilt(materialDirty);
builder.setRenderableCacheNeedsToBeRebuilt(renderableDirty);
builder.setComputableCacheNeedsToBeRebuilt(computeableDirty);
builder.setLightGathererCacheNeedsToBeRebuilt(lightsDirty);
-
+ builder.setMaterialGathererCacheNeedsToBeRebuilt(materialCacheNeedsToBeRebuilt);
builder.prepareJobs();
renderBinJobs.append(builder.buildJobHierachy());
}
@@ -1845,6 +1845,7 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs()
// FilterLayerEntityJob is part of the RenderViewBuilder jobs and must be run later
// if none of those jobs are started this frame
notCleared |= AbstractRenderer::EntityEnabledDirty;
+ notCleared |= AbstractRenderer::FrameGraphDirty;
notCleared |= AbstractRenderer::LayersDirty;
}