From a3d0e3f14de4ae99128424ce0f495f40bb638202 Mon Sep 17 00:00:00 2001
From: Ptolemy <ptolemy@lindenlab.com>
Date: Wed, 15 Apr 2020 09:26:29 -0700
Subject: Cleanup to coding standard

---
 indra/llrender/llglslshader.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 384e5bf99f..8cc3c50ec2 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -485,7 +485,8 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,
     return success;
 }
 
-BOOL LLGLSLShader::attachVertexObject(std::string object_path) {
+BOOL LLGLSLShader::attachVertexObject(std::string object_path)
+{
     if (LLShaderMgr::instance()->mVertexShaderObjects.count(object_path) > 0)
     {
         stop_glerror();
-- 
cgit v1.2.3


From 2df08951e102c05335ce4143fe436b40cc34d22a Mon Sep 17 00:00:00 2001
From: Ptolemy <ptolemy@lindenlab.com>
Date: Wed, 15 Apr 2020 15:38:46 -0700
Subject: SL-13019: Add debug logging of shaders used to track down macOSX /
 OSX GLSL linker errors

---
 indra/llrender/llglslshader.cpp | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 8cc3c50ec2..74cfa60b27 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -37,6 +37,10 @@
 #include "OpenGL/OpenGL.h"
 #endif
 
+// Print-print list of shader included source files that are linked together via glAttachObjectARB()
+// i.e. On macOS / OSX the AMD GLSL linker will display an error if a varying is left in an undefined state.
+#define DEBUG_SHADER_INCLUDES 0
+
 // Lots of STL stuff in here, using namespace std to keep things more readable
 using std::vector;
 using std::pair;
@@ -402,6 +406,10 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,
     mDefines["OLD_SELECT"] = "1";
 #endif
     
+#if DEBUG_SHADER_INCLUDES
+    fprintf(stderr, "--- %s ---\n", mName.c_str());
+#endif // DEBUG_SHADER_INCLUDES
+
     //compile new source
     vector< pair<string,GLenum> >::iterator fileIter = mShaderFiles.begin();
     for ( ; fileIter != mShaderFiles.end(); fileIter++ )
@@ -485,12 +493,36 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,
     return success;
 }
 
+#if DEBUG_SHADER_INCLUDES
+void dumpAttachObject( const char *func_name, GLhandleARB program_object, const std::string &object_path )
+{
+    GLcharARB* info_log;
+    GLint      info_len_expect = 0;
+    GLint      info_len_actual = 0;
+
+    glGetObjectParameterivARB(program_object, GL_OBJECT_INFO_LOG_LENGTH_ARB, &info_len_expect);
+    fprintf(stderr, " * %-20s(), log size: %d, %s\n", func_name, info_len_expect, object_path.c_str());
+
+    if (info_len_expect > 0)
+    {
+        fprintf(stderr, " ========== %s() ========== \n", func_name);
+        info_log = new GLcharARB [ info_len_expect ];
+        glGetInfoLogARB(program_object, info_len_expect, &info_len_actual, info_log);
+        fprintf(stderr, "%s\n",  info_log);
+        delete [] info_log;
+    }
+}
+#endif // DEBUG_SHADER_INCLUDES
+
 BOOL LLGLSLShader::attachVertexObject(std::string object_path)
 {
     if (LLShaderMgr::instance()->mVertexShaderObjects.count(object_path) > 0)
     {
         stop_glerror();
         glAttachObjectARB(mProgramObject, LLShaderMgr::instance()->mVertexShaderObjects[object_path]);
+#if DEBUG_SHADER_INCLUDES
+        dumpAttachObject("attachVertexObject", mProgramObject, object_path);
+#endif // DEBUG_SHADER_INCLUDES
         stop_glerror();
         return TRUE;
     }
@@ -507,6 +539,9 @@ BOOL LLGLSLShader::attachFragmentObject(std::string object_path)
     {
         stop_glerror();
         glAttachObjectARB(mProgramObject, LLShaderMgr::instance()->mFragmentShaderObjects[object_path]);
+#if DEBUG_SHADER_INCLUDES
+        dumpAttachObject("attachFragmentObject", mProgramObject, object_path);
+#endif // DEBUG_SHADER_INCLUDES
         stop_glerror();
         return TRUE;
     }
@@ -523,6 +558,10 @@ void LLGLSLShader::attachObject(GLhandleARB object)
     {
         stop_glerror();
         glAttachObjectARB(mProgramObject, object);
+#if DEBUG_SHADER_INCLUDES
+        std::string object_path("???");
+        dumpAttachObject("attachObject", mProgramObject, object_path);
+#endif // DEBUG_SHADER_INCLUDES
         stop_glerror();
     }
     else
-- 
cgit v1.2.3


From 05ddffb6bab6da2e2bcaaa215824b4c09d6928e7 Mon Sep 17 00:00:00 2001
From: Ptolemy <ptolemy@lindenlab.com>
Date: Tue, 28 Apr 2020 09:12:32 -0700
Subject: DRTVWR-510: Cleanup: Add link for Optimus global variable for nVidia
 driver.

---
 indra/llrender/llgl.cpp | 1 +
 1 file changed, 1 insertion(+)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 4c56b8eace..7560fe9505 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -2703,6 +2703,7 @@ LLGLSPipelineBlendSkyBox::LLGLSPipelineBlendSkyBox(bool depth_test, bool depth_w
 
 #if LL_WINDOWS
 // Expose desired use of high-performance graphics processor to Optimus driver
+// https://docs.nvidia.com/gameworks/content/technologies/desktop/optimus.htm
 extern "C" 
 { 
     _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; 
-- 
cgit v1.2.3


From 3d872fb21f089ce06da576ee08660a0245262cc5 Mon Sep 17 00:00:00 2001
From: Dave Houlton <euclid@lindenlab.com>
Date: Mon, 8 Jun 2020 15:47:41 -0600
Subject: SL-13281, add missing srgb->linear conversion for specular

---
 indra/llrender/llimagegl.cpp      | 80 ++++++++++++++++++++++++---------------
 indra/llrender/llrender.cpp       | 22 +++++++----
 indra/llrender/llrendertarget.cpp | 10 ++---
 3 files changed, 68 insertions(+), 44 deletions(-)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index ff74380217..3b6a49735e 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -985,38 +985,56 @@ BOOL LLImageGL::preAddToAtlas(S32 discard_level, const LLImageRaw* raw_image)
 		return FALSE;
 	}
 
-	if( !mHasExplicitFormat )
-	{
-		switch (mComponents)
-		{
-			case 1:
-			// Use luminance alpha (for fonts)
-			mFormatInternal = GL_LUMINANCE8;
-			mFormatPrimary = GL_LUMINANCE;
-			mFormatType = GL_UNSIGNED_BYTE;
-			break;
-			case 2:
-			// Use luminance alpha (for fonts)
-			mFormatInternal = GL_LUMINANCE8_ALPHA8;
-			mFormatPrimary = GL_LUMINANCE_ALPHA;
-			mFormatType = GL_UNSIGNED_BYTE;
-			break;
-			case 3:
-			mFormatInternal = GL_RGB8;
-			mFormatPrimary = GL_RGB;
-			mFormatType = GL_UNSIGNED_BYTE;
-			break;
-			case 4:
-			mFormatInternal = GL_RGBA8;
-			mFormatPrimary = GL_RGBA;
-			mFormatType = GL_UNSIGNED_BYTE;
-			break;
-			default:
-			LL_ERRS() << "Bad number of components for texture: " << (U32)getComponents() << LL_ENDL;
-		}
-	}
+    if (!mHasExplicitFormat)
+    {
+        switch (mComponents)
+        {
+            case 1:
+                // Use luminance alpha (for fonts)
+                mFormatInternal = GL_LUMINANCE8;
+                mFormatPrimary  = GL_LUMINANCE;
+                mFormatType     = GL_UNSIGNED_BYTE;
+                break;
+            case 2:
+                // Use luminance alpha (for fonts)
+                mFormatInternal = GL_LUMINANCE8_ALPHA8;
+                mFormatPrimary  = GL_LUMINANCE_ALPHA;
+                mFormatType     = GL_UNSIGNED_BYTE;
+                break;
+            case 3:
+#if USE_SRGB_DECODE
+                if (gGLManager.mHasTexturesRGBDecode)
+                {
+                    mFormatInternal = GL_SRGB8;
+                }
+                else
+#endif
+                {
+                    mFormatInternal = GL_RGB8;
+                }
+                mFormatPrimary = GL_RGB;
+                mFormatType    = GL_UNSIGNED_BYTE;
+                break;
+            case 4:
+#if USE_SRGB_DECODE
+                if (gGLManager.mHasTexturesRGBDecode)
+                {
+                    mFormatInternal = GL_SRGB8_ALPHA8;
+                }
+                else
+#endif
+                {
+                    mFormatInternal = GL_RGBA8;
+                }
+                mFormatPrimary = GL_RGBA;
+                mFormatType    = GL_UNSIGNED_BYTE;
+                break;
+            default:
+                LL_ERRS() << "Bad number of components for texture: " << (U32) getComponents() << LL_ENDL;
+        }
+    }
 
-	mCurrentDiscardLevel = discard_level;	
+    mCurrentDiscardLevel = discard_level;	
 	mDiscardLevelInAtlas = discard_level;
 	mTexelsInAtlas = raw_image->getWidth() * raw_image->getHeight() ;
 	mLastBindTime = sLastFrameTime;
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index ebc4659bcf..eb9da34ca8 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -849,26 +849,32 @@ void LLTexUnit::debugTextureUnit(void)
 	}
 }
 
-void LLTexUnit::setTextureColorSpace(eTextureColorSpace space) {
+void LLTexUnit::setTextureColorSpace(eTextureColorSpace space)
+{
     mTexColorSpace = space;
 
 #if USE_SRGB_DECODE
-    if (gGLManager.mHasTexturesRGBDecode) {
-
-        if (space == TCS_SRGB) {
+    if (gGLManager.mHasTexturesRGBDecode)
+    {
+        if (space == TCS_SRGB)
+        {
             glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_SRGB_DECODE_EXT, GL_DECODE_EXT);
         }
-        else {
+        else
+        {
             glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT);
         }
 
-        if (gDebugGL) {
+        if (gDebugGL)
+        {
             assert_glerror();
         }
     }
+    else
 #endif
-    glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT);
-
+    {
+        glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT);
+    }
 }
 
 LLLightState::LLLightState(S32 index)
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
index 9fb4f7f2b0..e3c0255290 100644
--- a/indra/llrender/llrendertarget.cpp
+++ b/indra/llrender/llrendertarget.cpp
@@ -501,23 +501,23 @@ U32 LLRenderTarget::getNumTextures() const
 	return mTex.size();
 }
 
-
 void LLRenderTarget::bindTexture(U32 index, S32 channel, LLTexUnit::eTextureFilterOptions filter_options)
 {
-	gGL.getTexUnit(channel)->bindManual(mUsage, getTexture(index));
+    gGL.getTexUnit(channel)->bindManual(mUsage, getTexture(index));
 
     bool isSRGB = false;
     llassert(mInternalFormat.size() > index);
     switch (mInternalFormat[index])
     {
-        case GL_SRGB_ALPHA:
         case GL_SRGB:
+        case GL_SRGB8:
+        case GL_SRGB_ALPHA:
         case GL_SRGB8_ALPHA8:
             isSRGB = true;
-        break;
+            break;
 
         default:
-        break;
+            break;
     }
 
     gGL.getTexUnit(channel)->setTextureFilteringOption(filter_options);
-- 
cgit v1.2.3


From 7cd076c796126692c308df5416b42b24a96609fb Mon Sep 17 00:00:00 2001
From: Dave Houlton <euclid@lindenlab.com>
Date: Thu, 8 Oct 2020 16:48:25 -0600
Subject: DRTVWR-510 remove all LL_SOLARIS conditionals

---
 indra/llrender/llgl.cpp      |  18 ++--
 indra/llrender/llglheaders.h | 237 +------------------------------------------
 2 files changed, 10 insertions(+), 245 deletions(-)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 372ab4a5e3..ada5371c1a 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -151,7 +151,7 @@ LLMatrix4 gGLObliqueProjectionInverse;
 
 std::list<LLGLUpdate*> LLGLUpdate::sGLQ;
 
-#if (LL_WINDOWS || LL_LINUX || LL_SOLARIS)  && !LL_MESA_HEADLESS
+#if (LL_WINDOWS || LL_LINUX)  && !LL_MESA_HEADLESS
 // ATI prototypes
 
 #if LL_WINDOWS
@@ -328,7 +328,7 @@ PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB = NULL;
 #endif
 
 // vertex shader prototypes
-#if LL_LINUX || LL_SOLARIS
+#if LL_LINUX
 PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB = NULL;
 PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB = NULL;
 PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB = NULL;
@@ -347,7 +347,7 @@ PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB = NULL;
 PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB = NULL;
 PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB = NULL;
 PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB = NULL;
-#endif // LL_LINUX || LL_SOLARIS
+#endif // LL_LINUX
 PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB = NULL;
 PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB = NULL;
 PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB = NULL;
@@ -355,7 +355,7 @@ PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB = NULL;
 PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB = NULL;
 PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB = NULL;
 PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB = NULL;
-#if LL_LINUX  || LL_SOLARIS
+#if LL_LINUX
 PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB = NULL;
 PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB = NULL;
 PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB = NULL;
@@ -393,7 +393,7 @@ PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB = NULL;
 PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB = NULL;
 PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB = NULL;
 PFNGLISPROGRAMARBPROC glIsProgramARB = NULL;
-#endif // LL_LINUX || LL_SOLARIS
+#endif // LL_LINUX
 PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB = NULL;
 PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB = NULL;
 PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB = NULL;
@@ -1093,7 +1093,7 @@ void LLGLManager::initExtensions()
 	mHasFragmentShader = ExtensionExists("GL_ARB_fragment_shader", gGLHExts.mSysExts) && (LLRender::sGLCoreProfile || ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts));
 #endif
 
-#if LL_LINUX || LL_SOLARIS
+#if LL_LINUX
 	LL_INFOS() << "initExtensions() checking shell variables to adjust features..." << LL_ENDL;
 	// Our extension support for the Linux Client is very young with some
 	// potential driver gotchas, so offer a semi-secret way to turn it off.
@@ -1163,7 +1163,7 @@ void LLGLManager::initExtensions()
 		if (strchr(blacklist,'u')) mHasDepthClamp = FALSE;
 		
 	}
-#endif // LL_LINUX || LL_SOLARIS
+#endif // LL_LINUX
 	
 	if (!mHasMultitexture)
 	{
@@ -1241,7 +1241,7 @@ void LLGLManager::initExtensions()
 	glGetIntegerv(GL_MAX_ELEMENTS_INDICES, (GLint*) &mGLMaxIndexRange);
 	glGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint*) &mGLMaxTextureSize);
 
-#if (LL_WINDOWS || LL_LINUX || LL_SOLARIS) && !LL_MESA_HEADLESS
+#if (LL_WINDOWS || LL_LINUX) && !LL_MESA_HEADLESS
 	LL_DEBUGS("RenderInit") << "GL Probe: Getting symbols" << LL_ENDL;
 	if (mHasVertexBufferObject)
 	{
@@ -1340,7 +1340,7 @@ void LLGLManager::initExtensions()
 		glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageCallbackARB");
 		glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetDebugMessageLogARB");
 	}
-#if (!LL_LINUX && !LL_SOLARIS) || LL_LINUX_NV_GL_HEADERS
+#if (!LL_LINUX) || LL_LINUX_NV_GL_HEADERS
 	// This is expected to be a static symbol on Linux GL implementations, except if we use the nvidia headers - bah
 	glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements");
 	if (!glDrawRangeElements)
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index 36fbb381bb..6bca3623e0 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -27,242 +27,7 @@
 #ifndef LL_LLGLHEADERS_H
 #define LL_LLGLHEADERS_H
 
-#if LL_SOLARIS
-#   if defined(__sparc)
-#      define I_NEED_OS2_H 	//  avoiding BOOL conflicts
-#   endif
-#   include "GL/gl.h"
-#   if defined(__sparc)
-#      undef I_NEED_OS2_H
-#      ifdef BOOL
-#         undef BOOL		// now get rid of Xmd.h crap
-#      endif
-#   endif
-#   include "GL/glx.h"
-#   define  GL_GLEXT_PROTOTYPES 1
-#   include "GL/glext.h"
-#   include "GL/glu.h"
-#   include "GL/glx.h"
-#   define  GLX_GLXEXT_PROTOTYPES 1
-#   include "GL/glxext.h"
-//#   define  GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB((const GLubyte*)(p))
-#   define  GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddress((const GLubyte*)(p))
-
-// The __APPLE__ kludge is to make glh_extensions.h not symbol-clash horribly
-// This header is distributed with SL.  You'll find it in linden/libraries/include/GL/
-# define __APPLE__
-# include "GL/glh_extensions.h"
-# undef __APPLE__
-
-
-// GL_ARB_vertex_buffer_object
-extern PFNGLBINDBUFFERARBPROC		glBindBufferARB;
-extern PFNGLDELETEBUFFERSARBPROC	glDeleteBuffersARB;
-extern PFNGLGENBUFFERSARBPROC		glGenBuffersARB;
-extern PFNGLISBUFFERARBPROC			glIsBufferARB;
-extern PFNGLBUFFERDATAARBPROC		glBufferDataARB;
-extern PFNGLBUFFERSUBDATAARBPROC	glBufferSubDataARB;
-extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB;
-extern PFNGLMAPBUFFERARBPROC		glMapBufferARB;
-extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB;
-extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB;
-extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB;
-
-// GL_ARB_vertex_array_object
-extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
-extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
-extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
-extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
-
-// GL_ARB_sync
-extern PFNGLFENCESYNCPROC				glFenceSync;
-extern PFNGLISSYNCPROC					glIsSync;
-extern PFNGLDELETESYNCPROC				glDeleteSync;
-extern PFNGLCLIENTWAITSYNCPROC			glClientWaitSync;
-extern PFNGLWAITSYNCPROC				glWaitSync;
-extern PFNGLGETINTEGER64VPROC			glGetInteger64v;
-extern PFNGLGETSYNCIVPROC				glGetSynciv;
-
-// GL_APPLE_flush_buffer_range
-extern PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE;
-extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE;
-
-// GL_ARB_map_buffer_range
-extern PFNGLMAPBUFFERRANGEPROC			glMapBufferRange;
-extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange;
-
-// GL_ATI_vertex_array_object
-extern PFNGLNEWOBJECTBUFFERATIPROC			glNewObjectBufferATI;
-extern PFNGLISOBJECTBUFFERATIPROC			glIsObjectBufferATI;
-extern PFNGLUPDATEOBJECTBUFFERATIPROC		glUpdateObjectBufferATI;
-extern PFNGLGETOBJECTBUFFERFVATIPROC		glGetObjectBufferfvATI;
-extern PFNGLGETOBJECTBUFFERIVATIPROC		glGetObjectBufferivATI;
-extern PFNGLFREEOBJECTBUFFERATIPROC		    glFreeObjectBufferATI;
-extern PFNGLARRAYOBJECTATIPROC				glArrayObjectATI;
-extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC	glVertexAttribArrayObjectATI;
-extern PFNGLGETARRAYOBJECTFVATIPROC			glGetArrayObjectfvATI;
-extern PFNGLGETARRAYOBJECTIVATIPROC			glGetArrayObjectivATI;
-extern PFNGLVARIANTARRAYOBJECTATIPROC		glVariantObjectArrayATI;
-extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC	glGetVariantArrayObjectfvATI;
-extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC	glGetVariantArrayObjectivATI;
-
-// GL_ARB_occlusion_query
-extern PFNGLGENQUERIESARBPROC glGenQueriesARB;
-extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB;
-extern PFNGLISQUERYARBPROC glIsQueryARB;
-extern PFNGLBEGINQUERYARBPROC glBeginQueryARB;
-extern PFNGLENDQUERYARBPROC glEndQueryARB;
-extern PFNGLGETQUERYIVARBPROC glGetQueryivARB;
-extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB;
-extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB;
-
-// GL_ARB_timer_query
-extern PFNGLQUERYCOUNTERPROC glQueryCounter;
-extern PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v;
-extern PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v;
-
-// GL_ARB_point_parameters
-extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB;
-extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB;
-
-// GL_ARB_shader_objects
-extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
-extern PFNGLGETHANDLEARBPROC glGetHandleARB;
-extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
-extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
-extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
-extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
-extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
-extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
-extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
-extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
-extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB;
-extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
-extern PFNGLUNIFORM2FARBPROC glUniform2fARB;
-extern PFNGLUNIFORM3FARBPROC glUniform3fARB;
-extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
-extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
-extern PFNGLUNIFORM2IARBPROC glUniform2iARB;
-extern PFNGLUNIFORM3IARBPROC glUniform3iARB;
-extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
-extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB;
-extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB;
-extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB;
-extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB;
-extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB;
-extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB;
-extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB;
-extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB;
-extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB;
-extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB;
-extern PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
-extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB;
-extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB;
-extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
-extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
-extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB;
-extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
-extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB;
-extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB;
-extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB;
-extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB;
-
-// GL_ARB_vertex_shader
-extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB;
-extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB;
-extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB;
-extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB;
-extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB;
-extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB;
-extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB;
-extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB;
-extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB;
-extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB;
-extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB;
-extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB;
-extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB;
-extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB;
-extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB;
-extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB;
-extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB;
-extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB;
-extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB;
-extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB;
-extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB;
-extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB;
-extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB;
-extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB;
-extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB;
-extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB;
-extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB;
-extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB;
-extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB;
-extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB;
-extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB;
-extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB;
-extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB;
-extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB;
-extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB;
-extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB;
-extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
-extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
-extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
-extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
-extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB;
-extern PFNGLBINDPROGRAMARBPROC glBindProgramARB;
-extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB;
-extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB;
-extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB;
-extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB;
-extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB;
-extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB;
-extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB;
-extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB;
-extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB;
-extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB;
-extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB;
-extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB;
-extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB;
-extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB;
-extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB;
-extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB;
-extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB;
-extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB;
-extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB;
-extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB;
-extern PFNGLISPROGRAMARBPROC glIsProgramARB;
-extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
-extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB;
-extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
-
-extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB;
-extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB;
-
-extern PFNGLCOLORTABLEEXTPROC glColorTableEXT;
-
-//GL_EXT_blend_func_separate
-extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
-
-//GL_EXT_framebuffer_object
-extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT;
-extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
-extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT;
-extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT;
-extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT;
-extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT;
-extern PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT;
-extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT;
-extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;
-extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
-extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT;
-extern PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT;
-extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
-extern PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT;
-extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT;
-extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT;
-extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT;
-
-#elif LL_MESA
+#if LL_MESA
 //----------------------------------------------------------------------------
 // MESA headers
 // quotes so we get libraries/.../GL/ version
-- 
cgit v1.2.3


From a6058b0e9f22080c7aa28e33e1061e23d671d166 Mon Sep 17 00:00:00 2001
From: Dave Houlton <euclid@lindenlab.com>
Date: Fri, 16 Oct 2020 17:10:49 -0600
Subject: DRTVWR-510 remove obsolete mDebugGPU variable

---
 indra/llrender/llgl.cpp | 13 +------------
 indra/llrender/llgl.h   |  3 ---
 2 files changed, 1 insertion(+), 15 deletions(-)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index ada5371c1a..36177e00e8 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -471,8 +471,6 @@ LLGLManager::LLGLManager() :
 
 	mHasSeparateSpecularColor(FALSE),
 
-	mDebugGPU(FALSE),
-
 	mDriverVersionMajor(1),
 	mDriverVersionMinor(0),
 	mDriverVersionRelease(0),
@@ -865,16 +863,7 @@ bool LLGLManager::initGL()
 	return true;
 }
 
-void LLGLManager::setToDebugGPU()
-{
-	//"MOBILE INTEL(R) 965 EXPRESS CHIP", 
-	if (mGLRenderer.find("INTEL") != std::string::npos && mGLRenderer.find("965") != std::string::npos)
-	{
-		mDebugGPU = TRUE ;
-	}
-
-	return ;
-}
+//void LLGLManager::setToDebugGPU()
 
 void LLGLManager::getGLInfo(LLSD& info)
 {
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
index 91ef4e9102..95cc1899ee 100644
--- a/indra/llrender/llgl.h
+++ b/indra/llrender/llgl.h
@@ -142,9 +142,6 @@ public:
 	// Misc extensions
 	BOOL mHasSeparateSpecularColor;
 
-	//whether this GPU is in the debug list.
-	BOOL mDebugGPU;
-	
 	S32 mDriverVersionMajor;
 	S32 mDriverVersionMinor;
 	S32 mDriverVersionRelease;
-- 
cgit v1.2.3


From d12305496f73e0b55e8e1ec327a2567ca713da22 Mon Sep 17 00:00:00 2001
From: Dave Houlton <euclid@lindenlab.com>
Date: Mon, 19 Oct 2020 13:46:04 -0600
Subject: DRTVWR-510 clean up obsolete downstream-from-mDebugGPU code

---
 indra/llrender/llgl.cpp | 6 ------
 indra/llrender/llgl.h   | 1 -
 2 files changed, 7 deletions(-)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 36177e00e8..fa4d0977b2 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -852,10 +852,6 @@ bool LLGLManager::initGL()
 
 	stop_glerror();
 	
-	setToDebugGPU();
-
-	stop_glerror();
-
 	initGLStates();
 
 	stop_glerror();
@@ -863,8 +859,6 @@ bool LLGLManager::initGL()
 	return true;
 }
 
-//void LLGLManager::setToDebugGPU()
-
 void LLGLManager::getGLInfo(LLSD& info)
 {
 	if (gHeadlessClient)
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
index 95cc1899ee..3d597a23fe 100644
--- a/indra/llrender/llgl.h
+++ b/indra/llrender/llgl.h
@@ -173,7 +173,6 @@ private:
 	void initExtensions();
 	void initGLStates();
 	void initGLImages();
-	void setToDebugGPU();
 };
 
 extern LLGLManager gGLManager;
-- 
cgit v1.2.3


From a5aac898093371fddf3c7323c9dadc2f5be15583 Mon Sep 17 00:00:00 2001
From: Ptolemy <ptolemy@lindenlab.com>
Date: Wed, 6 Jan 2021 18:17:56 -0800
Subject: SL-14035: Don't use sRGB textures when not specified

---
 indra/llrender/llrender.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index 11d9ef3f57..d515fc707a 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -871,10 +871,10 @@ void LLTexUnit::setTextureColorSpace(eTextureColorSpace space)
         }
     }
     else
-#endif
     {
         glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT);
     }
+#endif
 }
 
 LLLightState::LLLightState(S32 index)
-- 
cgit v1.2.3


From 033d16747c7aab02e67001c210ecdb1cf953e327 Mon Sep 17 00:00:00 2001
From: Dave Houlton <euclid@lindenlab.com>
Date: Mon, 1 Feb 2021 16:25:56 -0700
Subject: DRTVWR-525 fix build error resulting from 6.4.13 merge

---
 indra/llrender/llgl.cpp | 1 -
 1 file changed, 1 deletion(-)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 542b081806..43fedeca64 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -1015,7 +1015,6 @@ void LLGLManager::asLLSD(LLSD& info)
 	// Other fields
 	info["has_requirements"] = mHasRequirements;
 	info["has_separate_specular_color"] = mHasSeparateSpecularColor;
-	info["debug_gpu"] = mDebugGPU;
 	info["max_vertex_range"] = mGLMaxVertexRange;
 	info["max_index_range"] = mGLMaxIndexRange;
 	info["max_texture_size"] = mGLMaxTextureSize;
-- 
cgit v1.2.3


From dab09485448f7761f88d0debe6e5204a5980b6d2 Mon Sep 17 00:00:00 2001
From: Dave Houlton <euclid@lindenlab.com>
Date: Thu, 4 Feb 2021 10:51:46 -0700
Subject: DRTVWR-525, improve dev's quality-of-life

---
 indra/llrender/llshadermgr.h    | 428 ++++++++++++++++++++--------------------
 indra/llrender/llvertexbuffer.h |  43 ++--
 2 files changed, 238 insertions(+), 233 deletions(-)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h
index 127b5ce5b6..3908efd4ec 100644
--- a/indra/llrender/llshadermgr.h
+++ b/indra/llrender/llshadermgr.h
@@ -36,221 +36,223 @@ public:
 	LLShaderMgr();
 	virtual ~LLShaderMgr();
 
-	typedef enum
-	{
-		MODELVIEW_MATRIX = 0,
-		PROJECTION_MATRIX,
-		INVERSE_PROJECTION_MATRIX,
-		MODELVIEW_PROJECTION_MATRIX,
-        INVERSE_MODELVIEW_MATRIX,
-		NORMAL_MATRIX,
-		TEXTURE_MATRIX0,
-		TEXTURE_MATRIX1,
-		TEXTURE_MATRIX2,
-		TEXTURE_MATRIX3,
-		OBJECT_PLANE_S,
-		OBJECT_PLANE_T,
-		VIEWPORT,
-		LIGHT_POSITION,
-		LIGHT_DIRECTION,
-		LIGHT_ATTENUATION,
-		LIGHT_DIFFUSE,
-		LIGHT_AMBIENT,
-		MULTI_LIGHT_COUNT,
-		MULTI_LIGHT,
-		MULTI_LIGHT_COL,
-		MULTI_LIGHT_FAR_Z,
-		PROJECTOR_MATRIX,
-		PROJECTOR_NEAR,
-		PROJECTOR_P,
-		PROJECTOR_N,
-		PROJECTOR_ORIGIN,
-		PROJECTOR_RANGE,
-		PROJECTOR_AMBIANCE,
-		PROJECTOR_SHADOW_INDEX,
-		PROJECTOR_SHADOW_FADE,
-		PROJECTOR_FOCUS,
-		PROJECTOR_LOD,
-		PROJECTOR_AMBIENT_LOD,
-		DIFFUSE_COLOR,
-		DIFFUSE_MAP,
-        ALTERNATE_DIFFUSE_MAP,
-		SPECULAR_MAP,
-		BUMP_MAP,
-        BUMP_MAP2,
-		ENVIRONMENT_MAP,
-		CLOUD_NOISE_MAP,
-        CLOUD_NOISE_MAP_NEXT,
-		FULLBRIGHT,
-		LIGHTNORM,
-		SUNLIGHT_COLOR,
-		AMBIENT,
-		BLUE_HORIZON,
-		BLUE_DENSITY,
-		HAZE_HORIZON,
-		HAZE_DENSITY,
-		CLOUD_SHADOW,
-		DENSITY_MULTIPLIER,
-		DISTANCE_MULTIPLIER,
-		MAX_Y,
-		GLOW,
-		CLOUD_COLOR,
-		CLOUD_POS_DENSITY1,
-		CLOUD_POS_DENSITY2,
-		CLOUD_SCALE,
-		GAMMA,
-		SCENE_LIGHT_STRENGTH,
-		LIGHT_CENTER,
-		LIGHT_SIZE,
-		LIGHT_FALLOFF,
-		BOX_CENTER,
-		BOX_SIZE,
-
-		GLOW_MIN_LUMINANCE,
-		GLOW_MAX_EXTRACT_ALPHA,
-		GLOW_LUM_WEIGHTS,
-		GLOW_WARMTH_WEIGHTS,
-		GLOW_WARMTH_AMOUNT,
-		GLOW_STRENGTH,
-		GLOW_DELTA,
-
-		MINIMUM_ALPHA,
-		EMISSIVE_BRIGHTNESS,
-
-		DEFERRED_SHADOW_MATRIX,
-		DEFERRED_ENV_MAT,
-		DEFERRED_SHADOW_CLIP,
-		DEFERRED_SUN_WASH,
-		DEFERRED_SHADOW_NOISE,
-		DEFERRED_BLUR_SIZE,
-		DEFERRED_SSAO_RADIUS,
-		DEFERRED_SSAO_MAX_RADIUS,
-		DEFERRED_SSAO_FACTOR,
-		DEFERRED_SSAO_FACTOR_INV,
-		DEFERRED_SSAO_EFFECT_MAT,
-		DEFERRED_SCREEN_RES,
-		DEFERRED_NEAR_CLIP,
-		DEFERRED_SHADOW_OFFSET,
-		DEFERRED_SHADOW_BIAS,
-		DEFERRED_SPOT_SHADOW_BIAS,
-		DEFERRED_SPOT_SHADOW_OFFSET,
-		DEFERRED_SUN_DIR,
-        DEFERRED_MOON_DIR,
-		DEFERRED_SHADOW_RES,
-		DEFERRED_PROJ_SHADOW_RES,
-		DEFERRED_DEPTH_CUTOFF,
-		DEFERRED_NORM_CUTOFF,
-		DEFERRED_SHADOW_TARGET_WIDTH,
-
-		FXAA_TC_SCALE,
-		FXAA_RCP_SCREEN_RES,
-		FXAA_RCP_FRAME_OPT,
-		FXAA_RCP_FRAME_OPT2,
-
-		DOF_FOCAL_DISTANCE,
-		DOF_BLUR_CONSTANT,
-		DOF_TAN_PIXEL_ANGLE,
-		DOF_MAGNIFICATION,
-		DOF_MAX_COF,
-		DOF_RES_SCALE,
-		DOF_WIDTH,
-		DOF_HEIGHT,
-
-		DEFERRED_DEPTH,
-		DEFERRED_SHADOW0,
-		DEFERRED_SHADOW1,
-		DEFERRED_SHADOW2,
-		DEFERRED_SHADOW3,
-		DEFERRED_SHADOW4,
-		DEFERRED_SHADOW5,
-		DEFERRED_NORMAL,
-		DEFERRED_POSITION,
-		DEFERRED_DIFFUSE,
-		DEFERRED_SPECULAR,
-		DEFERRED_NOISE,
-		DEFERRED_LIGHTFUNC,
-		DEFERRED_LIGHT,
-		DEFERRED_BLOOM,
-		DEFERRED_PROJECTION,
-		DEFERRED_NORM_MATRIX,
-		TEXTURE_GAMMA,		
-		SPECULAR_COLOR,
-		ENVIRONMENT_INTENSITY,
-		
-		AVATAR_MATRIX,
-		AVATAR_TRANSLATION,
-
-		WATER_SCREENTEX,
-		WATER_SCREENDEPTH,
-		WATER_REFTEX,
-		WATER_EYEVEC,
-		WATER_TIME,
-		WATER_WAVE_DIR1,
-		WATER_WAVE_DIR2,
-		WATER_LIGHT_DIR,
-		WATER_SPECULAR,
-		WATER_SPECULAR_EXP,
-		WATER_FOGCOLOR,
-		WATER_FOGDENSITY,
-		WATER_FOGKS,
-		WATER_REFSCALE,
-		WATER_WATERHEIGHT,
-		WATER_WATERPLANE,
-		WATER_NORM_SCALE,
-		WATER_FRESNEL_SCALE,
-		WATER_FRESNEL_OFFSET,
-		WATER_BLUR_MULTIPLIER,
-		WATER_SUN_ANGLE,
-		WATER_SCALED_ANGLE,
-		WATER_SUN_ANGLE2,
-		
-		WL_CAMPOSLOCAL,
-
-		AVATAR_WIND,
-		AVATAR_SINWAVE,
-		AVATAR_GRAVITY,
-
-		TERRAIN_DETAIL0,
-		TERRAIN_DETAIL1,
-		TERRAIN_DETAIL2,
-		TERRAIN_DETAIL3,
-		TERRAIN_ALPHARAMP,
-		
-		SHINY_ORIGIN,
-        DISPLAY_GAMMA,
-
-        INSCATTER_RT,
-        SUN_SIZE,
-        FOG_COLOR,
+    // clang-format off
+    typedef enum
+    {                                       // Shader uniform name, set in LLShaderMgr::initAttribsAndUniforms()
+        MODELVIEW_MATRIX = 0,               //  "modelview_matrix"
+        PROJECTION_MATRIX,                  //  "projection_matrix"
+        INVERSE_PROJECTION_MATRIX,          //  "inv_proj"
+        MODELVIEW_PROJECTION_MATRIX,        //  "modelview_projection_matrix"
+        INVERSE_MODELVIEW_MATRIX,           //  "inv_modelview"
+        NORMAL_MATRIX,                      //  "normal_matrix"
+        TEXTURE_MATRIX0,                    //  "texture_matrix0"
+        TEXTURE_MATRIX1,                    //  "texture_matrix1"
+        TEXTURE_MATRIX2,                    //  "texture_matrix2"
+        TEXTURE_MATRIX3,                    //  "texture_matrix3"
+        OBJECT_PLANE_S,                     //  "object_plane_s"
+        OBJECT_PLANE_T,                     //  "object_plane_t"
+        VIEWPORT,                           //  "viewport"
+        LIGHT_POSITION,                     //  "light_position"
+        LIGHT_DIRECTION,                    //  "light_direction"
+        LIGHT_ATTENUATION,                  //  "light_attenuation"
+        LIGHT_DIFFUSE,                      //  "light_diffuse"
+        LIGHT_AMBIENT,                      //  "light_ambient"
+        MULTI_LIGHT_COUNT,                  //  "light_count"
+        MULTI_LIGHT,                        //  "light"
+        MULTI_LIGHT_COL,                    //  "light_col"
+        MULTI_LIGHT_FAR_Z,                  //  "far_z"
+        PROJECTOR_MATRIX,                   //  "proj_mat"
+        PROJECTOR_NEAR,                     //  "proj_near"
+        PROJECTOR_P,                        //  "proj_p"
+        PROJECTOR_N,                        //  "proj_n"
+        PROJECTOR_ORIGIN,                   //  "proj_origin"
+        PROJECTOR_RANGE,                    //  "proj_range"
+        PROJECTOR_AMBIANCE,                 //  "proj_ambiance"
+        PROJECTOR_SHADOW_INDEX,             //  "proj_shadow_idx"
+        PROJECTOR_SHADOW_FADE,              //  "shadow_fade"
+        PROJECTOR_FOCUS,                    //  "proj_focus"
+        PROJECTOR_LOD,                      //  "proj_lod"
+        PROJECTOR_AMBIENT_LOD,              //  "proj_ambient_lod"
+        DIFFUSE_COLOR,                      //  "color"
+        DIFFUSE_MAP,                        //  "diffuseMap"
+        ALTERNATE_DIFFUSE_MAP,              //  "altDiffuseMap"
+        SPECULAR_MAP,                       //  "specularMap"
+        BUMP_MAP,                           //  "bumpMap"
+        BUMP_MAP2,                          //  "bumpMap2"
+        ENVIRONMENT_MAP,                    //  "environmentMap"
+        CLOUD_NOISE_MAP,                    //  "cloud_noise_texture"
+        CLOUD_NOISE_MAP_NEXT,               //  "cloud_noise_texture_next"
+        FULLBRIGHT,                         //  "fullbright"
+        LIGHTNORM,                          //  "lightnorm"
+        SUNLIGHT_COLOR,                     //  "sunlight_color"
+        AMBIENT,                            //  "ambient_color"
+        BLUE_HORIZON,                       //  "blue_horizon"
+        BLUE_DENSITY,                       //  "blue_density"
+        HAZE_HORIZON,                       //  "haze_horizon"
+        HAZE_DENSITY,                       //  "haze_density"
+        CLOUD_SHADOW,                       //  "cloud_shadow"
+        DENSITY_MULTIPLIER,                 //  "density_multiplier"
+        DISTANCE_MULTIPLIER,                //  "distance_multiplier"
+        MAX_Y,                              //  "max_y"
+        GLOW,                               //  "glow"
+        CLOUD_COLOR,                        //  "cloud_color"
+        CLOUD_POS_DENSITY1,                 //  "cloud_pos_density1"
+        CLOUD_POS_DENSITY2,                 //  "cloud_pos_density2"
+        CLOUD_SCALE,                        //  "cloud_scale"
+        GAMMA,                              //  "gamma"
+        SCENE_LIGHT_STRENGTH,               //  "scene_light_strength"
+        LIGHT_CENTER,                       //  "center"
+        LIGHT_SIZE,                         //  "size"
+        LIGHT_FALLOFF,                      //  "falloff"
+        BOX_CENTER,                         //  "box_center"
+        BOX_SIZE,                           //  "box_size"
+
+        GLOW_MIN_LUMINANCE,                 //  "minLuminance"
+        GLOW_MAX_EXTRACT_ALPHA,             //  "maxExtractAlpha"
+        GLOW_LUM_WEIGHTS,                   //  "lumWeights"
+        GLOW_WARMTH_WEIGHTS,                //  "warmthWeights"
+        GLOW_WARMTH_AMOUNT,                 //  "warmthAmount"
+        GLOW_STRENGTH,                      //  "glowStrength"
+        GLOW_DELTA,                         //  "glowDelta"
+
+        MINIMUM_ALPHA,                      //  "minimum_alpha"
+        EMISSIVE_BRIGHTNESS,                //  "emissive_brightness"
+
+        DEFERRED_SHADOW_MATRIX,             //  "shadow_matrix"
+        DEFERRED_ENV_MAT,                   //  "env_mat"
+        DEFERRED_SHADOW_CLIP,               //  "shadow_clip"
+        DEFERRED_SUN_WASH,                  //  "sun_wash"
+        DEFERRED_SHADOW_NOISE,              //  "shadow_noise"
+        DEFERRED_BLUR_SIZE,                 //  "blur_size"
+        DEFERRED_SSAO_RADIUS,               //  "ssao_radius"
+        DEFERRED_SSAO_MAX_RADIUS,           //  "ssao_max_radius"
+        DEFERRED_SSAO_FACTOR,               //  "ssao_factor"
+        DEFERRED_SSAO_FACTOR_INV,           //  "ssao_factor_inv"
+        DEFERRED_SSAO_EFFECT_MAT,           //  "ssao_effect_mat"
+        DEFERRED_SCREEN_RES,                //  "screen_res"
+        DEFERRED_NEAR_CLIP,                 //  "near_clip"
+        DEFERRED_SHADOW_OFFSET,             //  "shadow_offset"
+        DEFERRED_SHADOW_BIAS,               //  "shadow_bias"
+        DEFERRED_SPOT_SHADOW_BIAS,          //  "spot_shadow_bias"
+        DEFERRED_SPOT_SHADOW_OFFSET,        //  "spot_shadow_offset"
+        DEFERRED_SUN_DIR,                   //  "sun_dir"
+        DEFERRED_MOON_DIR,                  //  "moon_dir"
+        DEFERRED_SHADOW_RES,                //  "shadow_res"
+        DEFERRED_PROJ_SHADOW_RES,           //  "proj_shadow_res"
+        DEFERRED_DEPTH_CUTOFF,              //  "depth_cutoff"
+        DEFERRED_NORM_CUTOFF,               //  "norm_cutoff"
+        DEFERRED_SHADOW_TARGET_WIDTH,       //  "shadow_target_width"
+
+        FXAA_TC_SCALE,                      //  "tc_scale"
+        FXAA_RCP_SCREEN_RES,                //  "rcp_screen_res"
+        FXAA_RCP_FRAME_OPT,                 //  "rcp_frame_opt"
+        FXAA_RCP_FRAME_OPT2,                //  "rcp_frame_opt2"
+
+        DOF_FOCAL_DISTANCE,                 //  "focal_distance"
+        DOF_BLUR_CONSTANT,                  //  "blur_constant"
+        DOF_TAN_PIXEL_ANGLE,                //  "tan_pixel_angle"
+        DOF_MAGNIFICATION,                  //  "magnification"
+        DOF_MAX_COF,                        //  "max_cof"
+        DOF_RES_SCALE,                      //  "res_scale"
+        DOF_WIDTH,                          //  "dof_width"
+        DOF_HEIGHT,                         //  "dof_height"
+
+        DEFERRED_DEPTH,                     //  "depthMap"
+        DEFERRED_SHADOW0,                   //  "shadowMap0"
+        DEFERRED_SHADOW1,                   //  "shadowMap1"
+        DEFERRED_SHADOW2,                   //  "shadowMap2"
+        DEFERRED_SHADOW3,                   //  "shadowMap3"
+        DEFERRED_SHADOW4,                   //  "shadowMap4"
+        DEFERRED_SHADOW5,                   //  "shadowMap5"
+        DEFERRED_NORMAL,                    //  "normalMap"
+        DEFERRED_POSITION,                  //  "positionMap"
+        DEFERRED_DIFFUSE,                   //  "diffuseRect"
+        DEFERRED_SPECULAR,                  //  "specularRect"
+        DEFERRED_NOISE,                     //  "noiseMap"
+        DEFERRED_LIGHTFUNC,                 //  "lightFunc"
+        DEFERRED_LIGHT,                     //  "lightMap"
+        DEFERRED_BLOOM,                     //  "bloomMap"
+        DEFERRED_PROJECTION,                //  "projectionMap"
+        DEFERRED_NORM_MATRIX,               //  "norm_mat"
+        TEXTURE_GAMMA,                      //  "texture_gamma"
+        SPECULAR_COLOR,                     //  "specular_color"
+        ENVIRONMENT_INTENSITY,              //  "env_intensity"
+
+        AVATAR_MATRIX,                      //  "matrixPalette"
+        AVATAR_TRANSLATION,                 //  "translationPalette"
+
+        WATER_SCREENTEX,                    //  "screenTex"
+        WATER_SCREENDEPTH,                  //  "screenDepth"
+        WATER_REFTEX,                       //  "refTex"
+        WATER_EYEVEC,                       //  "eyeVec"
+        WATER_TIME,                         //  "time"
+        WATER_WAVE_DIR1,                    //  "waveDir1"
+        WATER_WAVE_DIR2,                    //  "waveDir2"
+        WATER_LIGHT_DIR,                    //  "lightDir"
+        WATER_SPECULAR,                     //  "specular"
+        WATER_SPECULAR_EXP,                 //  "lightExp"
+        WATER_FOGCOLOR,                     //  "waterFogColor"
+        WATER_FOGDENSITY,                   //  "waterFogDensity"
+        WATER_FOGKS,                        //  "waterFogKS"
+        WATER_REFSCALE,                     //  "refScale"
+        WATER_WATERHEIGHT,                  //  "waterHeight"
+        WATER_WATERPLANE,                   //  "waterPlane"
+        WATER_NORM_SCALE,                   //  "normScale"
+        WATER_FRESNEL_SCALE,                //  "fresnelScale"
+        WATER_FRESNEL_OFFSET,               //  "fresnelOffset"
+        WATER_BLUR_MULTIPLIER,              //  "blurMultiplier"
+        WATER_SUN_ANGLE,                    //  "sunAngle"
+        WATER_SCALED_ANGLE,                 //  "scaledAngle"
+        WATER_SUN_ANGLE2,                   //  "sunAngle2"
+
+        WL_CAMPOSLOCAL,                     //  "camPosLocal"
+
+        AVATAR_WIND,                        //  "gWindDir"
+        AVATAR_SINWAVE,                     //  "gSinWaveParams"
+        AVATAR_GRAVITY,                     //  "gGravity"
+
+        TERRAIN_DETAIL0,                    //  "detail_0"
+        TERRAIN_DETAIL1,                    //  "detail_1"
+        TERRAIN_DETAIL2,                    //  "detail_2"
+        TERRAIN_DETAIL3,                    //  "detail_3"
+        TERRAIN_ALPHARAMP,                  //  "alpha_ramp"
+
+        SHINY_ORIGIN,                       //  "origin"
+        DISPLAY_GAMMA,                      //  "display_gamma"
+
+        INSCATTER_RT,                       //  "inscatter"
+        SUN_SIZE,                           //  "sun_size"
+        FOG_COLOR,                          //  "fog_color"
 
         // precomputed textures
-        TRANSMITTANCE_TEX,
-        SCATTER_TEX,
-        SINGLE_MIE_SCATTER_TEX,
-        ILLUMINANCE_TEX,
-        BLEND_FACTOR,
-
-        NO_ATMO,
-        MOISTURE_LEVEL,
-        DROPLET_RADIUS,
-        ICE_LEVEL,
-        RAINBOW_MAP,
-        HALO_MAP,
-
-        MOON_BRIGHTNESS,
-
-        CLOUD_VARIANCE,
-
-        SH_INPUT_L1R,
-        SH_INPUT_L1G,
-        SH_INPUT_L1B,
-
-        SUN_MOON_GLOW_FACTOR,
-        WATER_EDGE_FACTOR,
-        SUN_UP_FACTOR,
-        MOONLIGHT_COLOR,
-		END_RESERVED_UNIFORMS
-	} eGLSLReservedUniforms;
+        TRANSMITTANCE_TEX,                  //  "transmittance_texture"
+        SCATTER_TEX,                        //  "scattering_texture"
+        SINGLE_MIE_SCATTER_TEX,             //  "single_mie_scattering_texture"
+        ILLUMINANCE_TEX,                    //  "irradiance_texture"
+        BLEND_FACTOR,                       //  "blend_factor"
+
+        NO_ATMO,                            //  "no_atmo"
+        MOISTURE_LEVEL,                     //  "moisture_level"
+        DROPLET_RADIUS,                     //  "droplet_radius"
+        ICE_LEVEL,                          //  "ice_level"
+        RAINBOW_MAP,                        //  "rainbow_map"
+        HALO_MAP,                           //  "halo_map"
+
+        MOON_BRIGHTNESS,                    //  "moon_brightness"
+
+        CLOUD_VARIANCE,                     //  "cloud_variance"
+
+        SH_INPUT_L1R,                       //  "sh_input_r"
+        SH_INPUT_L1G,                       //  "sh_input_g"
+        SH_INPUT_L1B,                       //  "sh_input_b"
+
+        SUN_MOON_GLOW_FACTOR,               //  "sun_moon_glow_factor"
+        WATER_EDGE_FACTOR,                  //  "water_edge"
+        SUN_UP_FACTOR,                      //  "sun_up_factor"
+        MOONLIGHT_COLOR,                    //  "moonlight_color"
+        END_RESERVED_UNIFORMS
+    } eGLSLReservedUniforms;
+    // clang-format on
 
 	// singleton pattern implementation
 	static LLShaderMgr * instance();
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index 9867bd16d6..dbe1a3687f 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -155,9 +155,8 @@ public:
 	//get the size of a buffer with the given typemask and vertex count
 	//fill offsets with the offset of each vertex component array into the buffer
 	// indexed by the following enum
-	static S32 calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices);		
+	static S32 calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices);
 
-	
 	//WARNING -- when updating these enums you MUST 
 	// 1 - update LLVertexBuffer::sTypeSize
 	// 2 - add a strider accessor
@@ -165,24 +164,28 @@ public:
 	// 4 - modify LLVertexBuffer::setupClientArray
 	// 5 - modify LLViewerShaderMgr::mReservedAttribs
 	// 6 - update LLVertexBuffer::setupVertexArray
-	enum {
-		TYPE_VERTEX = 0,
-		TYPE_NORMAL,
-		TYPE_TEXCOORD0,
-		TYPE_TEXCOORD1,
-		TYPE_TEXCOORD2,
-		TYPE_TEXCOORD3,
-		TYPE_COLOR,
-		TYPE_EMISSIVE,
-		TYPE_TANGENT,
-		TYPE_WEIGHT,
-		TYPE_WEIGHT4,
-		TYPE_CLOTHWEIGHT,
-		TYPE_TEXTURE_INDEX,
-		TYPE_MAX,   // TYPE_MAX is the size/boundary marker for attributes that go in the vertex buffer
-		TYPE_INDEX,	// TYPE_INDEX is beyond _MAX because it lives in a separate (index) buffer	
-	};
-	enum {
+
+    // clang-format off
+    enum {                      // Shader attribute name, set in LLShaderMgr::initAttribsAndUniforms()
+        TYPE_VERTEX = 0,        //  "position"
+        TYPE_NORMAL,            //  "normal"
+        TYPE_TEXCOORD0,         //  "texcoord0"
+        TYPE_TEXCOORD1,         //  "texcoord1"
+        TYPE_TEXCOORD2,         //  "texcoord2"
+        TYPE_TEXCOORD3,         //  "texcoord3"
+        TYPE_COLOR,             //  "diffuse_color"
+        TYPE_EMISSIVE,          //  "emissive"
+        TYPE_TANGENT,           //  "tangent"
+        TYPE_WEIGHT,            //  "weight"
+        TYPE_WEIGHT4,           //  "weight4"
+        TYPE_CLOTHWEIGHT,       //  "clothing"
+        TYPE_TEXTURE_INDEX,     //  "texture_index"
+        TYPE_MAX,   // TYPE_MAX is the size/boundary marker for attributes that go in the vertex buffer
+        TYPE_INDEX,	// TYPE_INDEX is beyond _MAX because it lives in a separate (index) buffer	
+    };
+    // clang-format on
+
+    enum {
 		MAP_VERTEX = (1<<TYPE_VERTEX),
 		MAP_NORMAL = (1<<TYPE_NORMAL),
 		MAP_TEXCOORD0 = (1<<TYPE_TEXCOORD0),
-- 
cgit v1.2.3


From d357bf7ae5c5e0b6e66e7d82ce1677360b4cb990 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Thu, 1 Apr 2021 17:36:26 +0300
Subject: SL-14990 Turn on shader init logging after crash

---
 indra/llrender/llglslshader.cpp | 10 ++++++-
 indra/llrender/llshadermgr.cpp  | 60 +++++++++++++++++------------------------
 2 files changed, 33 insertions(+), 37 deletions(-)

(limited to 'indra/llrender')

diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 74cfa60b27..4351f6e2c8 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -396,10 +396,18 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,
     mLightHash = 0xFFFFFFFF;
 
     llassert_always(!mShaderFiles.empty());
-    BOOL success = TRUE;
 
     // Create program
     mProgramObject = glCreateProgramObjectARB();
+    if (mProgramObject == 0)
+    {
+        // Shouldn't happen if shader related extensions, like ARB_vertex_shader, exist.
+        LL_SHADER_LOADING_WARNS() << "Failed to create handle for shader: " << mName << LL_ENDL;
+        unloadInternal();
+        return FALSE;
+    }
+
+    BOOL success = TRUE;
     
 #if LL_DARWIN
     // work-around missing mix(vec3,vec3,bvec3)
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index 236ebbd78f..e8c6295930 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -611,13 +611,11 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 #endif
 
 	GLenum error = GL_NO_ERROR;
-	if (gDebugGL)
+
+	error = glGetError();
+	if (error != GL_NO_ERROR)
 	{
-		error = glGetError();
-		if (error != GL_NO_ERROR)
-		{
-			LL_SHADER_LOADING_WARNS() << "GL ERROR entering loadShaderFile(): " << error << LL_ENDL;
-		}
+		LL_SHADER_LOADING_WARNS() << "GL ERROR entering loadShaderFile(): " << error << " for file: " << filename << LL_ENDL;
 	}
 	
 	if (filename.empty()) 
@@ -966,55 +964,45 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 
 	//create shader object
 	GLhandleARB ret = glCreateShaderObjectARB(type);
-	if (gDebugGL)
+
+	error = glGetError();
+	if (error != GL_NO_ERROR)
 	{
-		error = glGetError();
-		if (error != GL_NO_ERROR)
-		{
-			LL_WARNS("ShaderLoading") << "GL ERROR in glCreateShaderObjectARB: " << error << LL_ENDL;
-		}
+		LL_WARNS("ShaderLoading") << "GL ERROR in glCreateShaderObjectARB: " << error << " for file: " << open_file_name << LL_ENDL;
 	}
-	
+
 	//load source
 	glShaderSourceARB(ret, shader_code_count, (const GLcharARB**) shader_code_text, NULL);
 
-	if (gDebugGL)
+	error = glGetError();
+	if (error != GL_NO_ERROR)
 	{
-		error = glGetError();
-		if (error != GL_NO_ERROR)
-		{
-			LL_WARNS("ShaderLoading") << "GL ERROR in glShaderSourceARB: " << error << LL_ENDL;
-		}
+		LL_WARNS("ShaderLoading") << "GL ERROR in glShaderSourceARB: " << error << " for file: " << open_file_name << LL_ENDL;
 	}
 
 	//compile source
 	glCompileShaderARB(ret);
 
-	if (gDebugGL)
+	error = glGetError();
+	if (error != GL_NO_ERROR)
 	{
-		error = glGetError();
-		if (error != GL_NO_ERROR)
-		{
-			LL_WARNS("ShaderLoading") << "GL ERROR in glCompileShaderARB: " << error << LL_ENDL;
-		}
+		LL_WARNS("ShaderLoading") << "GL ERROR in glCompileShaderARB: " << error << " for file: " << open_file_name << LL_ENDL;
 	}
-		
+
 	if (error == GL_NO_ERROR)
 	{
 		//check for errors
 		GLint success = GL_TRUE;
 		glGetObjectParameterivARB(ret, GL_OBJECT_COMPILE_STATUS_ARB, &success);
-		if (gDebugGL || success == GL_FALSE)
+
+		error = glGetError();
+		if (error != GL_NO_ERROR || success == GL_FALSE) 
 		{
-			error = glGetError();
-			if (error != GL_NO_ERROR || success == GL_FALSE) 
-			{
-				//an error occured, print log
-				LL_WARNS("ShaderLoading") << "GLSL Compilation Error:" << LL_ENDL;
-				dumpObjectLog(ret, TRUE, open_file_name);
-                dumpShaderSource(shader_code_count, shader_code_text);
-				ret = 0;
-			}
+			//an error occured, print log
+			LL_WARNS("ShaderLoading") << "GLSL Compilation Error:" << LL_ENDL;
+			dumpObjectLog(ret, TRUE, open_file_name);
+			dumpShaderSource(shader_code_count, shader_code_text);
+			ret = 0;
 		}
 	}
 	else
-- 
cgit v1.2.3