From 86d19ae426990fd38d1c9263777472d4e21ecf94 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Mon, 2 Aug 2021 08:00:14 -0400
Subject: [PATCH] Reduce glow render targets by 1

---
 indra/newview/pipeline.cpp | 28 ++++++++++++++--------------
 indra/newview/pipeline.h   |  2 +-
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 5f5f7878528..0ed3f9e52ba 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1286,7 +1286,7 @@ void LLPipeline::releaseGLBuffers()
     mBake.release();
 	mHighlight.release();
 	
-	for (U32 i = 0; i < 3; i++)
+	for (U32 i = 0; i < 2; i++)
 	{
 		mGlow[i].release();
 	}
@@ -1367,9 +1367,16 @@ void LLPipeline::createGLBuffers()
 
     // allocate screen space glow buffers
     const U32 glow_res = llmax(1, llmin(512, 1 << gSavedSettings.getS32("RenderGlowResolutionPow")));
-    for (U32 i = 0; i < 3; i++)
+    glClearColor(0,0,0,0);
+    gGL.setColorMask(true, true);
+    for (U32 i = 0; i < 2; i++)
     {
-        mGlow[i].allocate(512, glow_res, GL_RGBA, FALSE, FALSE);
+        if(mGlow[i].allocate(512,glow_res,GL_RGBA,FALSE,FALSE))
+        {
+            mGlow[i].bindTarget();
+            mGlow[i].clear();
+            mGlow[i].flush();
+        }
     }
 
     allocateScreenBuffer(resX, resY);
@@ -7708,8 +7715,8 @@ void LLPipeline::renderFinalize()
     {
         {
             LL_RECORD_BLOCK_TIME(FTM_RENDER_BLOOM_FBO);
-            mGlow[2].bindTarget();
-            mGlow[2].clear();
+            mGlow[1].bindTarget();
+            mGlow[1].clear();
         }
 
         gGlowExtractProgram.bind();
@@ -7751,7 +7758,7 @@ void LLPipeline::renderFinalize()
 
             gGL.getTexUnit(0)->unbind(mScreen.getUsage());
 
-            mGlow[2].flush();
+            mGlow[1].flush();
 
             tc1.setVec(0, 0);
             tc2.setVec(2, 2); 
@@ -7782,14 +7789,7 @@ void LLPipeline::renderFinalize()
                 mGlow[i % 2].clear();
             }
 
-            if (i == 0)
-            {
-                gGL.getTexUnit(0)->bind(&mGlow[2]);
-            }
-            else
-            {
-                gGL.getTexUnit(0)->bind(&mGlow[(i - 1) % 2]);
-            }
+            gGL.getTexUnit(0)->bind(&mGlow[(i+1)%2]);
 
             if (i % 2 == 0)
             {
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 22fa0c48120..7541fc64f6a 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -672,7 +672,7 @@ class LLPipeline
     LLRenderTarget				mBake;
 
 	//texture for making the glow
-	LLRenderTarget				mGlow[3];
+	LLRenderTarget				mGlow[2];
 
 	//noise map
 	U32					mNoiseMap;
-- 
GitLab