diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-12-04 14:49:45 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2016-01-13 14:02:46 +0000 |
commit | 84ca67b504b6d8a4825988681dd4d49031805c96 (patch) | |
tree | b3cfb45cbf22dc86a85d388993c0071c42562b1c /src/render/backend | |
parent | 8a8746f7011ce6a831df715120cbd54a3938e2a4 (diff) |
RenderView Compute handling
Change-Id: Ifbe93173010bf058f198990c62d5e93fea967a74
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/backend')
-rw-r--r-- | src/render/backend/renderview.cpp | 4 | ||||
-rw-r--r-- | src/render/backend/renderview_p.h | 37 |
2 files changed, 26 insertions, 15 deletions
diff --git a/src/render/backend/renderview.cpp b/src/render/backend/renderview.cpp index 7d9434a01..523cc9248 100644 --- a/src/render/backend/renderview.cpp +++ b/src/render/backend/renderview.cpp @@ -274,8 +274,12 @@ RenderView::RenderView() , m_clearBuffer(QClearBuffer::None) , m_stateSet(Q_NULLPTR) , m_noDraw(false) + , m_compute(false) , m_frustumCulling(false) { + m_workGroups[0] = 1; + m_workGroups[1] = 1; + m_workGroups[2] = 1; } RenderView::~RenderView() diff --git a/src/render/backend/renderview_p.h b/src/render/backend/renderview_p.h index 9819b0b5e..59da14b60 100644 --- a/src/render/backend/renderview_p.h +++ b/src/render/backend/renderview_p.h @@ -115,9 +115,9 @@ public: void sort(); void setRenderer(Renderer *renderer); - inline void setSurfaceSize(const QSize &size) { m_surfaceSize = size; } - inline Renderer *renderer() const { return m_renderer; } - inline NodeManagers *nodeManagers() const { return m_manager; } + inline void setSurfaceSize(const QSize &size) Q_DECL_NOEXCEPT { m_surfaceSize = size; } + inline Renderer *renderer() const Q_DECL_NOEXCEPT { return m_renderer; } + inline NodeManagers *nodeManagers() const Q_DECL_NOEXCEPT { return m_manager; } inline void setAllocator(Qt3DCore::QFrameAllocator *allocator) { @@ -155,14 +155,19 @@ public: inline void setTechniqueFilter(const TechniqueFilter *filter) { m_data->m_techniqueFilter = filter; } inline const TechniqueFilter *techniqueFilter() const { return m_data->m_techniqueFilter; } - inline RenderStateSet *stateSet() const { return m_stateSet; } - void setStateSet(RenderStateSet *stateSet) { m_stateSet = stateSet; } + inline RenderStateSet *stateSet() const Q_DECL_NOEXCEPT { return m_stateSet; } + void setStateSet(RenderStateSet *stateSet) Q_DECL_NOEXCEPT { m_stateSet = stateSet; } - inline bool noDraw() const { return m_noDraw; } - void setNoDraw(bool noDraw) { m_noDraw = noDraw; } + inline bool noDraw() const Q_DECL_NOEXCEPT { return m_noDraw; } + void setNoDraw(bool noDraw) Q_DECL_NOEXCEPT { m_noDraw = noDraw; } - inline bool frustumCulling() const { return m_frustumCulling; } - void setFrustumCulling(bool frustumCulling) { m_frustumCulling = frustumCulling; } + inline bool isCompute() const Q_DECL_NOEXCEPT { return m_compute; } + void setCompute(bool compute) Q_DECL_NOEXCEPT { m_compute = compute; } + + void setComputeWorkgroups(int x, int y, int z) Q_DECL_NOEXCEPT { m_workGroups[0] = x; m_workGroups[1] = y; m_workGroups[2] = z; } + + inline bool frustumCulling() const Q_DECL_NOEXCEPT { return m_frustumCulling; } + void setFrustumCulling(bool frustumCulling) Q_DECL_NOEXCEPT { m_frustumCulling = frustumCulling; } // TODO: Get rid of this overly complex memory management by splitting out the // InnerData as a RenderViewConfig struct. This can be created by setRenderViewConfigFromFrameGraphLeafNode @@ -205,8 +210,8 @@ public: return *m_clearColor; } - inline void setClearBuffer(QClearBuffer::BufferType clearBuffer) { m_clearBuffer = clearBuffer; } - inline QClearBuffer::BufferType clearBuffer() const { return m_clearBuffer; } + inline void setClearBuffer(QClearBuffer::BufferType clearBuffer) Q_DECL_NOEXCEPT { m_clearBuffer = clearBuffer; } + inline QClearBuffer::BufferType clearBuffer() const Q_DECL_NOEXCEPT { return m_clearBuffer; } void buildRenderCommands(Entity *preprocessedTreeRoot, const Plane *planes); QVector<RenderCommand *> commands() const { return m_commands; } @@ -216,8 +221,8 @@ public: void setDrawBuffers(const QList<QRenderAttachment::RenderAttachmentType> &drawBuffers) { m_attachmentPack.setDrawBuffers(drawBuffers); } const AttachmentPack &attachmentPack() const; - void setRenderTargetHandle(HTarget renderTargetHandle) { m_renderTarget = renderTargetHandle; } - HTarget renderTargetHandle() const { return m_renderTarget; } + void setRenderTargetHandle(HTarget renderTargetHandle) Q_DECL_NOEXCEPT { m_renderTarget = renderTargetHandle; } + HTarget renderTargetHandle() const Q_DECL_NOEXCEPT { return m_renderTarget; } void addSortCriteria(const QList<Qt3DCore::QNodeId> &sortMethodUid) { m_data->m_sortingCriteria.append(sortMethodUid); } @@ -268,8 +273,10 @@ private: AttachmentPack m_attachmentPack; QClearBuffer::BufferType m_clearBuffer; RenderStateSet *m_stateSet; - bool m_noDraw; - bool m_frustumCulling; + bool m_noDraw:1; + bool m_compute:1; + bool m_frustumCulling:1; + int m_workGroups[3]; // We do not use pointers to RenderNodes or Drawable's here so that the // render aspect is free to change the drawables on the next frame whilst |