diff options
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/backend/renderview.cpp | 1 | ||||
-rw-r--r-- | src/render/backend/renderview_p.h | 4 | ||||
-rw-r--r-- | src/render/jobs/renderviewjobutils.cpp | 11 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/render/backend/renderview.cpp b/src/render/backend/renderview.cpp index 40a3ccbc9..24e9d9c10 100644 --- a/src/render/backend/renderview.cpp +++ b/src/render/backend/renderview.cpp @@ -274,6 +274,7 @@ RenderView::RenderView() , m_data(Q_NULLPTR) , m_clearColor(Q_NULLPTR) , m_viewport(Q_NULLPTR) + , m_surface(Q_NULLPTR) , m_clearBuffer(QClearBuffer::None) , m_stateSet(Q_NULLPTR) , m_noDraw(false) diff --git a/src/render/backend/renderview_p.h b/src/render/backend/renderview_p.h index 4657dae81..ccb0554f3 100644 --- a/src/render/backend/renderview_p.h +++ b/src/render/backend/renderview_p.h @@ -230,6 +230,9 @@ public: void addSortCriteria(const QList<Qt3DCore::QNodeId> &sortMethodUid) { m_data->m_sortingCriteria.append(sortMethodUid); } + void setSurface(QSurface *surface) { m_surface = surface; } + QSurface *surface() const { return m_surface; } + // Helps making the size of RenderView smaller // Contains all the data needed for the actual building of the RenderView // But that aren't used later by the Renderer @@ -274,6 +277,7 @@ private: mutable QColor *m_clearColor; mutable QRectF *m_viewport; HTarget m_renderTarget; + QSurface *m_surface; AttachmentPack m_attachmentPack; QClearBuffer::BufferType m_clearBuffer; RenderStateSet *m_stateSet; diff --git a/src/render/jobs/renderviewjobutils.cpp b/src/render/jobs/renderviewjobutils.cpp index c9d7e2434..c2f03fc69 100644 --- a/src/render/jobs/renderviewjobutils.cpp +++ b/src/render/jobs/renderviewjobutils.cpp @@ -58,6 +58,7 @@ #include <Qt3DRender/private/shaderdata_p.h> #include <Qt3DRender/private/statesetnode_p.h> #include <Qt3DRender/private/dispatchcompute_p.h> +#include <Qt3DRender/private/rendersurfaceselector_p.h> QT_BEGIN_NAMESPACE @@ -222,6 +223,16 @@ void setRenderViewConfigFromFrameGraphLeafNode(RenderView *rv, const FrameGraphN break; } + case FrameGraphNode::Surface: { + // Use the surface closest to leaf node + if (rv->surface() == Q_NULLPTR) { + const Render::RenderSurfaceSelector *surfaceSelector + = static_cast<const Render::RenderSurfaceSelector *>(node); + rv->setSurface(surfaceSelector->surface()); + } + break; + } + default: // Should never get here qCWarning(Backend) << "Unhandled FrameGraphNode type"; |