summaryrefslogtreecommitdiffstats
path: root/src/render/backend/renderer_p.h
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-12-13 09:29:27 +0100
committerJani Heikkinen <jani.heikkinen@qt.io>2016-12-14 11:18:09 +0000
commit7eb54642ba19a995e251518448a4896943dea1d2 (patch)
treee0050686b9158f8b93070264b3c294ec920fbcb4 /src/render/backend/renderer_p.h
parent2f3837cdbce8b27499db03f376e3781f5aede317 (diff)
Properly order texture jobs
1) Load all the texture data 2) Sync 3) Look for dirty textures We want to wait for textures to have been loaded to look for the dirty textures otherwise the texture may not be ready and we would render some invalid texture. Task-number: QTBUG-56466 Task-number: QTBUG-57509 Change-Id: I2326f81bfe51dcdc753ff4eba150ce4cfae1635f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/backend/renderer_p.h')
-rw-r--r--src/render/backend/renderer_p.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/render/backend/renderer_p.h b/src/render/backend/renderer_p.h
index 965bccbcf..ad86fc3ce 100644
--- a/src/render/backend/renderer_p.h
+++ b/src/render/backend/renderer_p.h
@@ -136,6 +136,8 @@ class VSyncFrameAdvanceService;
class PickEventFilter;
class NodeManagers;
+using SynchronizerJobPtr = GenericLambdaJobPtr<std::function<void()>>;
+
class QT3DRENDERSHARED_PRIVATE_EXPORT Renderer : public AbstractRenderer
{
public:
@@ -180,6 +182,8 @@ public:
QVector<Qt3DCore::QAspectJobPtr> renderBinJobs() Q_DECL_OVERRIDE;
Qt3DCore::QAspectJobPtr pickBoundingVolumeJob() Q_DECL_OVERRIDE;
+ Qt3DCore::QAspectJobPtr syncTextureLoadingJob() Q_DECL_OVERRIDE;
+
QVector<Qt3DCore::QAspectJobPtr> createRenderBufferJobs() const;
inline FrameCleanupJobPtr frameCleanupJob() const { return m_cleanupJob; }
@@ -189,6 +193,7 @@ public:
inline UpdateWorldTransformJobPtr updateWorldTransformJob() const { return m_worldTransformJob; }
inline UpdateWorldBoundingVolumeJobPtr updateWorldBoundingVolumeJob() const { return m_updateWorldBoundingVolumeJob; }
inline UpdateMeshTriangleListJobPtr updateMeshTriangleListJob() const { return m_updateMeshTriangleListJob; }
+ inline SynchronizerJobPtr textureLoadSyncJob() const { return m_syncTextureLoadingJob; }
Qt3DCore::QAbstractFrameAdvanceService *frameAdvanceService() const Q_DECL_OVERRIDE;
@@ -311,6 +316,8 @@ private:
GenericLambdaJobPtr<std::function<void ()>> m_textureGathererJob;
GenericLambdaJobPtr<std::function<void ()>> m_shaderGathererJob;
+ SynchronizerJobPtr m_syncTextureLoadingJob;
+
void lookForDirtyBuffers();
void lookForDirtyTextures();
void lookForDirtyShaders();