From a3549b47235c8d35fefb8f2f373b77dfddfeccfb Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Fri, 3 Jul 2020 14:31:23 -0400
Subject: [PATCH] Try raising max texture index to 32....See if the driver bugs
 still pop up!

---
 indra/llrender/llgl.cpp                 | 2 ++
 indra/newview/app_settings/settings.xml | 2 +-
 indra/newview/llviewershadermgr.cpp     | 2 +-
 indra/newview/llvovolume.cpp            | 2 +-
 4 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 48744a55ab1..2b6e606d3f5 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -796,6 +796,8 @@ bool LLGLManager::initGL()
 		mNumTextureImageUnits = llmin(num_tex_image_units, 32);
 	}
 
+	LL_INFOS() << "NUM TEX IMAGE UNITS: " << mNumTextureImageUnits << LL_ENDL;
+
 	if (LLRender::sGLCoreProfile)
 	{
 		mNumTextureUnits = llmin(mNumTextureImageUnits, MAX_GL_TEXTURE_UNITS);
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 04b84ff3a1e..0d2c009bc2f 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9461,7 +9461,7 @@
     <key>Type</key>
     <string>U32</string>
     <key>Value</key>
-    <integer>16</integer>
+    <integer>32</integer>
   </map>
     <key>RenderDebugTextureBind</key>
     <map>
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index f108d963207..079638adef5 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -404,7 +404,7 @@ void LLViewerShaderMgr::setShaders()
     LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits, (S32) max_texture_index), 1);
 
     //NEVER use more than 16 texture channels (work around for prevalent driver bug)
-    LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16);
+    LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 32);
 
     if (gGLManager.mGLSLVersionMajor < 1 ||
         (gGLManager.mGLSLVersionMajor == 1 && gGLManager.mGLSLVersionMinor <= 20))
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index ec778d82bf8..df1e7e11759 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -6278,7 +6278,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
 		texture_index_channels = gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels;
 	}
 
-	static LLCachedControl<U32> max_texture_index(gSavedSettings, "RenderMaxTextureIndex", 16);
+	static LLCachedControl<U32> max_texture_index(gSavedSettings, "RenderMaxTextureIndex", 32);
 	texture_index_channels = llmin(texture_index_channels, (S32) max_texture_index);
 	
 	//NEVER use more than 16 texture index channels (workaround for prevalent driver bug)
-- 
GitLab