diff --git a/native/cocos/renderer/pipeline/custom/NativePipeline.cpp b/native/cocos/renderer/pipeline/custom/NativePipeline.cpp index 25cbae01e99..c28c8a8282d 100644 --- a/native/cocos/renderer/pipeline/custom/NativePipeline.cpp +++ b/native/cocos/renderer/pipeline/custom/NativePipeline.cpp @@ -739,15 +739,16 @@ void NativePipeline::updateRenderWindow( if (resID == ResourceGraph::null_vertex()) { return; } - auto &desc = get(ResourceGraph::DescTag{}, resourceGraph, resID); + uint32_t width = 0; + uint32_t height = 0; visitObject( resID, resourceGraph, [&](IntrusivePtr &fb) { // deprecated CC_EXPECTS(false); CC_EXPECTS(!renderWindow->getSwapchain()); - desc.width = renderWindow->getWidth(); - desc.height = renderWindow->getHeight(); + width = renderWindow->getWidth(); + height = renderWindow->getHeight(); fb = renderWindow->getFramebuffer(); }, [&](RenderSwapchain &sc) { @@ -755,8 +756,8 @@ void NativePipeline::updateRenderWindow( const auto &oldTexture = resourceGraph.getTexture(resID); resourceGraph.invalidatePersistentRenderPassAndFramebuffer(oldTexture); if (newSwapchain) { - desc.width = newSwapchain->getWidth(); - desc.height = newSwapchain->getHeight(); + width = newSwapchain->getWidth(); + height = newSwapchain->getHeight(); sc.renderWindow = nullptr; sc.swapchain = renderWindow->getSwapchain(); @@ -767,8 +768,8 @@ void NativePipeline::updateRenderWindow( CC_EXPECTS(renderWindow->getFramebuffer()->getColorTextures().front()); const auto &texture = renderWindow->getFramebuffer()->getColorTextures().front(); - desc.width = texture->getWidth(); - desc.height = texture->getHeight(); + width = texture->getWidth(); + height = texture->getHeight(); sc.renderWindow = renderWindow; sc.swapchain = nullptr; @@ -777,10 +778,19 @@ void NativePipeline::updateRenderWindow( }, [](const auto & /*res*/) {}); + CC_ENSURES(width); + CC_ENSURES(height); + + { + auto &desc = get(ResourceGraph::DescTag{}, resourceGraph, resID); + desc.width = width; + desc.height = height; + } + // Associated depth stencil tryAddRenderWindowDepthStencil( *this, depthStencilName, - desc.width, desc.height, + width, height, renderWindow->getSwapchain()); }