diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2021-02-04 17:37:51 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-02-05 10:28:46 +0000 |
commit | cfb8f4ce7d024fda5470e5741cc3c0fcb7bbef2c (patch) | |
tree | d2655aae12b4dfd8ec2d30fa4243aa5ece936843 /src/quick/scenegraph/coreapi/qsgrenderer_p.h | |
parent | ba01d787b6de3779e4d2e622eba407ab8081280c (diff) |
Invalidate external renderpass descriptors from Quick3D
Change-Id: I362b35b3d038d4fb24fab0e73cb120027f2308ea
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
(cherry picked from commit 93fe74ca433850e505f8f8940e99f3bf6a6dc050)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/quick/scenegraph/coreapi/qsgrenderer_p.h')
-rw-r--r-- | src/quick/scenegraph/coreapi/qsgrenderer_p.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgrenderer_p.h b/src/quick/scenegraph/coreapi/qsgrenderer_p.h index 0c9a424abc..31f00dc738 100644 --- a/src/quick/scenegraph/coreapi/qsgrenderer_p.h +++ b/src/quick/scenegraph/coreapi/qsgrenderer_p.h @@ -115,6 +115,18 @@ public: void setRenderPassDescriptor(QRhiRenderPassDescriptor *rpDesc) { m_rp_desc = rpDesc; } QRhiRenderPassDescriptor *renderPassDescriptor() const { return m_rp_desc; } + void setExternalRenderPassDescriptor(QRhiRenderPassDescriptor *rpDesc) { + if (m_external_rp_desc) { + // Changes will be rare in practice - one has to construct a + // dynamic Quick 3D scene with reparenting involved for that. Play + // nice nonetheless and invalidate as soon as possible. + if (m_external_rp_desc != rpDesc) + invalidatePipelineCacheDependency(m_external_rp_desc); + } + m_rp_desc = rpDesc; + m_external_rp_desc = rpDesc; + } + void setRenderPassRecordingCallbacks(QSGRenderContext::RenderPassCallback start, QSGRenderContext::RenderPassCallback end, void *userData) @@ -150,6 +162,7 @@ protected: QRhiRenderTarget *m_rt; QRhiCommandBuffer *m_cb; QRhiRenderPassDescriptor *m_rp_desc; + QRhiRenderPassDescriptor *m_external_rp_desc; struct { QSGRenderContext::RenderPassCallback start = nullptr; QSGRenderContext::RenderPassCallback end = nullptr; |