diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2018-09-20 12:10:26 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2018-10-12 05:53:02 +0000 |
commit | 1739b90d6120e24065b0c85a8d293234c5d51787 (patch) | |
tree | 59efafef45767c9077ada0a8664d18e8bdf765c2 /src/render/backend | |
parent | 12cd9f0a5e32038d860d688ac6fa5b4ae32cfe7b (diff) |
Implement WaitFence/SetFence handling into the renderer
Slightly reorganize jobs between jobs needed for rendering and jobs
that should run even when no rendering is required.
Change-Id: I02d262efd8cb46c71c40ac6dbcd4d1b25bb725e1
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/backend')
-rw-r--r-- | src/render/backend/abstractrenderer_p.h | 1 | ||||
-rw-r--r-- | src/render/backend/managers_p.h | 5 | ||||
-rw-r--r-- | src/render/backend/nodemanagers.cpp | 2 | ||||
-rw-r--r-- | src/render/backend/nodemanagers_p.h | 3 |
4 files changed, 11 insertions, 0 deletions
diff --git a/src/render/backend/abstractrenderer_p.h b/src/render/backend/abstractrenderer_p.h index f1bdca7be..f19db066c 100644 --- a/src/render/backend/abstractrenderer_p.h +++ b/src/render/backend/abstractrenderer_p.h @@ -153,6 +153,7 @@ public: virtual bool shouldRender() = 0; virtual void skipNextFrame() = 0; + virtual QVector<Qt3DCore::QAspectJobPtr> preRenderingJobs() = 0; virtual QVector<Qt3DCore::QAspectJobPtr> renderBinJobs() = 0; virtual Qt3DCore::QAspectJobPtr pickBoundingVolumeJob() = 0; virtual Qt3DCore::QAspectJobPtr rayCastingJob() = 0; diff --git a/src/render/backend/managers_p.h b/src/render/backend/managers_p.h index b62e2f3e0..eb219fd1e 100644 --- a/src/render/backend/managers_p.h +++ b/src/render/backend/managers_p.h @@ -72,6 +72,7 @@ #include <Qt3DRender/private/shaderdata_p.h> #include <Qt3DRender/private/handle_types_p.h> #include <Qt3DRender/private/glbuffer_p.h> +#include <Qt3DRender/private/glfence_p.h> #include <Qt3DRender/private/textureimage_p.h> #include <Qt3DRender/private/attribute_p.h> #include <Qt3DRender/private/geometry_p.h> @@ -317,6 +318,10 @@ class GLBufferManager : public Qt3DCore::QResourceManager< { }; +class GLFenceManager : public QHash<Qt3DCore::QNodeId, GLFence> +{ +}; + class TextureImageManager : public Qt3DCore::QResourceManager< TextureImage, Qt3DCore::QNodeId, diff --git a/src/render/backend/nodemanagers.cpp b/src/render/backend/nodemanagers.cpp index 5db35082d..584ddd65c 100644 --- a/src/render/backend/nodemanagers.cpp +++ b/src/render/backend/nodemanagers.cpp @@ -85,6 +85,7 @@ NodeManagers::NodeManagers() , m_parameterManager(new ParameterManager()) , m_shaderDataManager(new ShaderDataManager()) , m_glBufferManager(new GLBufferManager()) + , m_glFenceManager(new GLFenceManager()) , m_bufferManager(new BufferManager()) , m_attributeManager(new AttributeManager()) , m_geometryManager(new GeometryManager()) @@ -128,6 +129,7 @@ NodeManagers::~NodeManagers() delete m_parameterManager; delete m_shaderDataManager; delete m_glBufferManager; + delete m_glFenceManager; delete m_textureImageManager; delete m_bufferManager; delete m_attributeManager; diff --git a/src/render/backend/nodemanagers_p.h b/src/render/backend/nodemanagers_p.h index 9277d4385..2c4926894 100644 --- a/src/render/backend/nodemanagers_p.h +++ b/src/render/backend/nodemanagers_p.h @@ -87,6 +87,7 @@ class AttachmentManager; class ParameterManager; class ShaderDataManager; class GLBufferManager; +class GLFenceManager; class TextureImageManager; class FilterKeyManager; class FrameGraphManager; @@ -210,6 +211,7 @@ public: inline ParameterManager *parameterManager() const Q_DECL_NOEXCEPT { return m_parameterManager; } inline ShaderDataManager *shaderDataManager() const Q_DECL_NOEXCEPT { return m_shaderDataManager; } inline GLBufferManager *glBufferManager() const Q_DECL_NOEXCEPT { return m_glBufferManager; } + inline GLFenceManager *glFenceManager() const Q_DECL_NOEXCEPT { return m_glFenceManager; } inline TextureImageManager *textureImageManager() const Q_DECL_NOEXCEPT { return m_textureImageManager; } inline BufferManager *bufferManager() const Q_DECL_NOEXCEPT { return m_bufferManager; } inline AttributeManager *attributeManager() const Q_DECL_NOEXCEPT { return m_attributeManager; } @@ -255,6 +257,7 @@ private: ParameterManager *m_parameterManager; ShaderDataManager *m_shaderDataManager; GLBufferManager *m_glBufferManager; + GLFenceManager *m_glFenceManager; BufferManager *m_bufferManager; AttributeManager *m_attributeManager; GeometryManager *m_geometryManager; |