summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-01-15 13:16:55 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-01-17 17:20:50 +0000
commitd5e7727c58a35a5f68260f4a1d4ce3a61d652765 (patch)
tree92d74bcb983f8c8a7c0470b5c98bb8ab09b4874e /src
parent21704e30c7abbf2f0d4cbc0f144c5bc5e3939abc (diff)
Store the surface to use in the RenderView
Change-Id: I4dbdfe9315dc3b0bb89119372301d24a292520d9 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-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";