summaryrefslogtreecommitdiffstats
path: root/src/render/backend/renderer_p.h
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-12-21 09:54:18 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-12-21 09:54:18 +0000
commit7ae2a8b0d42234ae47ae81b4b1d898e0c97b24d7 (patch)
treef82a98252405463cb1172101d31d5e7e1e3bb029 /src/render/backend/renderer_p.h
parent557fbb768fd2504d9eeae45511342a3c88b9ab3f (diff)
parent264043ab49ab48543c43920004e0521490ced5ad (diff)
Merge branch '5.8' into dev
Conflicts: src/input/frontend/qaxisaccumulator.cpp Change-Id: I7d213339241743e60f11cf0f3ae68076cb762c62
Diffstat (limited to 'src/render/backend/renderer_p.h')
-rw-r--r--src/render/backend/renderer_p.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/render/backend/renderer_p.h b/src/render/backend/renderer_p.h
index 87e8ec116..072ad3627 100644
--- a/src/render/backend/renderer_p.h
+++ b/src/render/backend/renderer_p.h
@@ -137,6 +137,8 @@ class VSyncFrameAdvanceService;
class PickEventFilter;
class NodeManagers;
+using SynchronizerJobPtr = GenericLambdaJobPtr<std::function<void()>>;
+
class QT3DRENDERSHARED_PRIVATE_EXPORT Renderer : public AbstractRenderer
{
public:
@@ -181,6 +183,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; }
@@ -191,6 +195,7 @@ public:
inline UpdateWorldBoundingVolumeJobPtr updateWorldBoundingVolumeJob() const { return m_updateWorldBoundingVolumeJob; }
inline UpdateMeshTriangleListJobPtr updateMeshTriangleListJob() const { return m_updateMeshTriangleListJob; }
inline FilterCompatibleTechniqueJobPtr filterCompatibleTechniqueJob() const { return m_filterCompatibleTechniqueJob; }
+ inline SynchronizerJobPtr textureLoadSyncJob() const { return m_syncTextureLoadingJob; }
Qt3DCore::QAbstractFrameAdvanceService *frameAdvanceService() const Q_DECL_OVERRIDE;
@@ -201,6 +206,7 @@ public:
void updateGLResources();
void updateTexture(Texture *texture);
+ void cleanupTexture(const Texture *texture);
void prepareCommandsSubmission(const QVector<RenderView *> &renderViews);
bool executeCommandsSubmission(const RenderView *rv);
@@ -228,6 +234,8 @@ public:
bool isReadyToSubmit();
QVariant executeCommand(const QStringList &args) Q_DECL_OVERRIDE;
+ void setOffscreenSurfaceHelper(OffscreenSurfaceHelper *helper) Q_DECL_OVERRIDE;
+ QSurfaceFormat format() Q_DECL_OVERRIDE;
struct ViewSubmissionResultData
{
@@ -266,6 +274,7 @@ private:
ShaderParameterPack m_defaultUniformPack;
QScopedPointer<GraphicsContext> m_graphicsContext;
+ QSurfaceFormat m_format;
RenderQueue *m_renderQueue;
QScopedPointer<RenderThread> m_renderThread;
@@ -313,6 +322,8 @@ private:
GenericLambdaJobPtr<std::function<void ()>> m_textureGathererJob;
GenericLambdaJobPtr<std::function<void ()>> m_shaderGathererJob;
+ SynchronizerJobPtr m_syncTextureLoadingJob;
+
void lookForDirtyBuffers();
void lookForDirtyTextures();
void lookForDirtyShaders();
@@ -323,10 +334,15 @@ private:
bool m_ownedContext;
+ OffscreenSurfaceHelper *m_offscreenHelper;
+ QMutex m_offscreenSurfaceMutex;
+
#ifdef QT3D_JOBS_RUN_STATS
QScopedPointer<Qt3DRender::Debug::CommandExecuter> m_commandExecuter;
friend class Qt3DRender::Debug::CommandExecuter;
#endif
+
+ QMetaObject::Connection m_contextConnection;
};
} // namespace Render