From cfb8f4ce7d024fda5470e5741cc3c0fcb7bbef2c Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 4 Feb 2021 17:37:51 +0100 Subject: Invalidate external renderpass descriptors from Quick3D Change-Id: I362b35b3d038d4fb24fab0e73cb120027f2308ea Reviewed-by: Andy Nichols (cherry picked from commit 93fe74ca433850e505f8f8940e99f3bf6a6dc050) Reviewed-by: Qt Cherry-pick Bot --- src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp') diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp index 903a98c8ed..aa46b5a509 100644 --- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp +++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp @@ -959,6 +959,11 @@ static void qsg_wipeBatch(Batch *batch, bool separateIndexBuffer) Renderer::~Renderer() { if (m_rhi) { + // If setExternalRenderPassDescriptor() was called, we have to + // aggressively invalidate to prevent an object, the lifetime of which + // we have no control over, staying in the (per-window) caches. + invalidatePipelineCacheDependency(m_external_rp_desc); + // Clean up batches and buffers const bool separateIndexBuffer = m_context->separateIndexBuffer(); for (int i = 0; i < m_opaqueBatches.size(); ++i) -- cgit v1.2.3