From ecc4e9392042f41cbf9b72d796bdc6e876f8f35f Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 12 Jun 2024 13:38:14 +0200 Subject: [PATCH] FIRE-34012: Add additional render target for 1024x dynamic texture bakes; might also fix FIRE-34016 happening on Intel GPUs --- indra/newview/lldynamictexture.cpp | 4 +++- indra/newview/pipeline.cpp | 18 +++++++++++++++++- indra/newview/pipeline.h | 3 +++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp index 993de7c7d4..f486ecfe16 100644 --- a/indra/newview/lldynamictexture.cpp +++ b/indra/newview/lldynamictexture.cpp @@ -191,7 +191,9 @@ BOOL LLViewerDynamicTexture::updateAllInstances() return TRUE; } - LLRenderTarget& bake_target = gPipeline.mAuxillaryRT.deferredScreen; + // Auxillary render target pack for 1024px LLDynamicTexture + //LLRenderTarget& bake_target = gPipeline.mAuxillaryRT.deferredScreen; + LLRenderTarget& bake_target = gPipeline.mDynamicTextureRT.deferredScreen; if (!bake_target.isComplete()) { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index ece2d49d00..22ff3f8457 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -219,7 +219,9 @@ S32 LLPipeline::RenderHeroProbeUpdateRate; S32 LLPipeline::RenderHeroProbeConservativeUpdateMultiplier; LLTrace::EventStatHandle LLPipeline::sStatBatchSize("renderbatchsize"); -const U32 LLPipeline::MAX_BAKE_WIDTH = 512; +// 1024px previews +//const U32 LLPipeline::MAX_BAKE_WIDTH = 512; +const U32 LLPipeline::MAX_BAKE_WIDTH = 1024; const F32 BACKLIGHT_DAY_MAGNITUDE_OBJECT = 0.1f; const F32 BACKLIGHT_NIGHT_MAGNITUDE_OBJECT = 0.08f; @@ -860,6 +862,12 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples) allocateScreenBuffer(res, res, samples); } + // Auxillary render target pack for 1024px LLDynamicTexture + mRT = &mDynamicTextureRT; + res = MAX_BAKE_WIDTH; + allocateScreenBuffer(res, res, samples); + // + mRT = &mMainRT; gCubeSnapshot = FALSE; } @@ -1257,6 +1265,14 @@ void LLPipeline::releaseScreenBuffers() mHeroProbeRT.fxaaBuffer.release(); mHeroProbeRT.deferredScreen.release(); mHeroProbeRT.deferredLight.release(); + + // Auxillary render target pack for 1024px LLDynamicTexture + mDynamicTextureRT.uiScreen.release(); + mDynamicTextureRT.screen.release(); + mDynamicTextureRT.fxaaBuffer.release(); + mDynamicTextureRT.deferredScreen.release(); + mDynamicTextureRT.deferredLight.release(); + // } void LLPipeline::releaseSunShadowTarget(U32 index) diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index a370f66108..9929650c9f 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -719,6 +719,9 @@ public: // Auxillary render target pack scaled to the hero probe's per-face size. RenderTargetPack mHeroProbeRT; + // Auxillary render target pack for 1024px LLDynamicTexture + RenderTargetPack mDynamicTextureRT; + // currently used render target pack RenderTargetPack* mRT;