summaryrefslogtreecommitdiffstats
path: root/src/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/render')
-rw-r--r--src/render/backend/renderview.cpp1
-rw-r--r--src/render/backend/renderview_p.h4
-rw-r--r--src/render/jobs/renderviewjobutils.cpp11
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";