From 4f18f9d6bd1e11b92040fbcc5ca1c2a173d38fc9 Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Tue, 14 Feb 2012 16:11:30 -0600
Subject: [PATCH] SH-2908 More complete GLSL 1.20 compatibility pass.

---
 .../shaders/class1/deferred/avatarF.glsl      |  2 +-
 .../shaders/class1/deferred/bumpF.glsl        |  2 +-
 .../shaders/class1/deferred/cloudsF.glsl      |  2 +-
 .../class1/deferred/diffuseAlphaMaskF.glsl    |  2 +-
 .../deferred/diffuseAlphaMaskIndexedF.glsl    |  2 +-
 .../deferred/diffuseAlphaMaskNoColorF.glsl    |  2 +-
 .../shaders/class1/deferred/diffuseF.glsl     |  2 +-
 .../class1/deferred/diffuseIndexedF.glsl      |  2 +-
 .../shaders/class1/deferred/fxaaF.glsl        | 21 ++++++++++++-------
 .../shaders/class1/deferred/giF.glsl          |  2 +-
 .../shaders/class1/deferred/impostorF.glsl    |  2 +-
 .../class1/deferred/multiPointLightF.glsl     |  2 +-
 .../shaders/class1/deferred/skyF.glsl         |  2 +-
 .../shaders/class1/deferred/starsF.glsl       |  2 +-
 .../shaders/class1/deferred/terrainF.glsl     |  2 +-
 .../shaders/class1/deferred/treeF.glsl        |  2 +-
 .../shaders/class1/deferred/waterF.glsl       |  2 +-
 .../shaders/class1/objects/bumpF.glsl         |  2 +-
 indra/newview/llviewershadermgr.cpp           |  6 ++++++
 19 files changed, 36 insertions(+), 25 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
index 4912c9a50c5..46d2aa4877e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 uniform sampler2D diffuseMap;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
index 141738023d7..680eadb8524 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 uniform sampler2D diffuseMap;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
index d2afc148b12..1d8ca04ccd3 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
@@ -27,7 +27,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 /////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
index c8acaee1349..b2027d3a5d0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 uniform float minimum_alpha;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
index d960cbc2fe8..ead384b07c1 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 VARYING vec3 vary_normal;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl
index b1c9b525699..f73fa6f2310 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl
@@ -27,7 +27,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 uniform float minimum_alpha;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
index caefe84957a..227aa2aae3c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 uniform sampler2D diffuseMap;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
index c89f3899548..d442e5403a4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 VARYING vec3 vary_normal;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
index d93e897029e..e02a7b405b8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
@@ -343,18 +343,23 @@ A. Or use FXAA_GREEN_AS_LUMA.
     // 1 = API supports gather4 on alpha channel.
     // 0 = API does not support gather4 on alpha channel.
     //
+	#if (FXAA_GLSL_130 == 0)
+		#define FXAA_GATHER4_ALPHA 0
+	#endif
     #if (FXAA_HLSL_5 == 1)
         #define FXAA_GATHER4_ALPHA 1
     #endif
-    #ifdef GL_ARB_gpu_shader5
-        #define FXAA_GATHER4_ALPHA 1
-    #endif
-    #ifdef GL_NV_gpu_shader5
-        #define FXAA_GATHER4_ALPHA 1
-    #endif
     #ifndef FXAA_GATHER4_ALPHA
-        #define FXAA_GATHER4_ALPHA 0
-    #endif
+		#ifdef GL_ARB_gpu_shader5
+			#define FXAA_GATHER4_ALPHA 1
+		#endif
+	    #ifdef GL_NV_gpu_shader5
+		    #define FXAA_GATHER4_ALPHA 1
+		#endif
+		#ifndef FXAA_GATHER4_ALPHA
+			#define FXAA_GATHER4_ALPHA 0
+		#endif
+	#endif
 #endif
 
 /*============================================================================
diff --git a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
index 28ed70d49dc..da1b2342400 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
@@ -28,7 +28,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
-#define frag_color gl_FragColor;
+#define frag_color gl_FragColor
 #endif
 
 uniform sampler2DRect depthMap;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
index d7bc8d02d9d..bc0719cb82d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 uniform float minimum_alpha;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
index cd50e17d7ec..53a2a13392d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
@@ -28,7 +28,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
-#define frag_color gl_FragColor;
+#define frag_color gl_FragColor
 #endif
 
 uniform sampler2DRect depthMap;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
index 7d80f07da44..faa54a316e8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 /////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
index 1cfcca4f5d9..821058804c9 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 VARYING vec4 vertex_color;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
index 021c23f76c4..8a5e482e80a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 uniform sampler2D detail_0;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
index 10d8a5c3215..6cf6106b519 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 uniform sampler2D diffuseMap;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
index e4c655ed7de..42dc7c09807 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
@@ -28,7 +28,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
-#define frag_data gl_FragData;
+#define frag_data gl_FragData
 #endif
 
 vec3 scaleSoftClip(vec3 inColor);
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
index df6130cc584..d55f0db530b 100644
--- a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
@@ -26,7 +26,7 @@
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
-#define frag_color gl_FragColor;
+#define frag_color gl_FragColor
 #endif
 
 uniform sampler2D texture0;
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 36a402e05e3..c84fb8facb8 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -363,6 +363,12 @@ void LLViewerShaderMgr::setShaders()
 	//NEVER use more than 16 texture channels (work around for prevalent driver bug)
 	LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16);
 
+	if (gGLManager.mGLSLVersionMajor < 1 ||
+		(gGLManager.mGLSLVersionMajor == 1 && gGLManager.mGLSLVersionMinor <= 20))
+	{ //NEVER use indexed texture rendering when GLSL version is 1.20 or earlier
+		LLGLSLShader::sIndexedTextureChannels = 1;
+	}
+
 	reentrance = true;
 
 	if (LLRender::sGLCoreProfile)
-- 
GitLab