summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJere Tuliniemi <jere.tuliniemi@qt.io>2020-03-18 02:56:17 +0200
committerJere Tuliniemi <jere.tuliniemi@qt.io>2020-03-23 11:25:17 +0200
commit8f912c9df0057be3b9783cc62e8a951a2ff60209 (patch)
tree6587e2e67ef571101d37f2a988f80385cdfaf015
parent941250a6c2e5868abbec44d3cabff66daec638fb (diff)
Release layer cache texture when layer size changes
Fixes dynamic resize for effects. Task-number: QT3DS-4085 Change-Id: Ifb52ce367af8b4edc7d03b4ed90980d8e510e662 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
index e41a738..0920b38 100644
--- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
+++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
@@ -1890,6 +1890,16 @@ void SLayerRenderData::RunRenderPass(TRenderRenderableFunction inRenderFn,
NVRenderTexture2D *theLayerColorTexture = m_LayerTexture;
NVRenderTexture2D *theLayerDepthTexture = m_LayerDepthTexture;
+ if (m_LayerCachedTexture) {
+ STextureDetails details(theLayerColorTexture->GetTextureDetails());
+ STextureDetails cachedDetails(m_LayerCachedTexture->GetTextureDetails());
+ if (cachedDetails.m_Width != details.m_Width
+ || cachedDetails.m_Height != details.m_Height) {
+ theResourceManager.Release(*m_LayerCachedTexture);
+ m_LayerCachedTexture = nullptr;
+ }
+ }
+
if (!m_LayerCachedTexture) {
STextureDetails details(theLayerColorTexture->GetTextureDetails());
QT3DSU32 finalWidth = ITextRenderer::NextMultipleOf4((QT3DSU32)(details.m_Width));