diff options
author | James Turner <zakalawe@mac.com> | 2018-11-14 13:22:28 +0000 |
---|---|---|
committer | James Turner <james.turner@kdab.com> | 2019-02-20 09:57:01 +0000 |
commit | eedd6402ecc00b7a8f382573fb63faf615ab4a54 (patch) | |
tree | 313438705170bc205db8b7109bbb9f17cd7668bb /src/render/renderers/opengl/renderer/renderviewbuilder_p.h | |
parent | d23bb633574fbfefde8a6b718487a448fb6d936b (diff) |
Cache light/renderable/computable vectors
This avoids running these jobs when lights / renderables have
not changed in a frame
Change-Id: I604180fe3442ab67648c4ba5d9effb8639c68ef7
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/renderers/opengl/renderer/renderviewbuilder_p.h')
-rw-r--r-- | src/render/renderers/opengl/renderer/renderviewbuilder_p.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/render/renderers/opengl/renderer/renderviewbuilder_p.h b/src/render/renderers/opengl/renderer/renderviewbuilder_p.h index 818313500..e223a5f1e 100644 --- a/src/render/renderers/opengl/renderer/renderviewbuilder_p.h +++ b/src/render/renderers/opengl/renderer/renderviewbuilder_p.h @@ -109,6 +109,15 @@ public: void setMaterialGathererCacheNeedsToBeRebuilt(bool needsToBeRebuilt); bool materialGathererCacheNeedsToBeRebuilt() const; + void setRenderableCacheNeedsToBeRebuilt(bool needsToBeRebuilt); + bool renderableCacheNeedsToBeRebuilt() const; + + void setComputableCacheNeedsToBeRebuilt(bool needsToBeRebuilt); + bool computableCacheNeedsToBeRebuilt() const; + + void setLightGathererCacheNeedsToBeRebuilt(bool needsToBeRebuilt); + bool lightGathererCacheNeedsToBeRebuilt() const; + static int optimalJobCount(); static QVector<Entity *> entitiesInSubset(const QVector<Entity *> &entities, const QVector<Entity *> &subset); @@ -118,6 +127,9 @@ private: Renderer *m_renderer; bool m_layerCacheNeedsToBeRebuilt; bool m_materialGathererCacheNeedsToBeRebuilt; + bool m_lightsCacheNeedsToBeRebuilt; + bool m_renderableCacheNeedsToBeRebuilt; + bool m_computableCacheNeedsToBeRebuilt; RenderViewInitializerJobPtr m_renderViewJob; FilterLayerEntityJobPtr m_filterEntityByLayerJob; @@ -137,6 +149,10 @@ private: SynchronizerJobPtr m_syncMaterialGathererJob; FilterProximityDistanceJobPtr m_filterProximityJob; + SynchronizerJobPtr m_cacheRenderableEntitiesJob; + SynchronizerJobPtr m_cacheComputableEntitiesJob; + SynchronizerJobPtr m_cacheLightsJob; + static const int m_optimalParallelJobCount; }; |