diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
index 7ad9af1bfa2142d09d0c5ce181bba10d636382bc..374469ce2f3c022f501388629c2811b7e5a134f8 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
@@ -40,4 +40,10 @@ mat4 getSkinnedTransform()
 	ret[3] = vec4(0,0,0,1);
 
 	return ret;
+
+#ifdef IS_AMD_CARD
+	// If it's AMD make sure the GLSL compiler sees the arrays referenced once by static index. Otherwise it seems to optimise the storage awawy which leads to unfun crashes and artifacts.
+	vec4 dummy1 = matrixPalette[0];
+	vec4 dummy2 = matrixPalette[44];
+#endif
 }
diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
index 960ec1e8e6802d66ecde53f0819e9c011acb671d..0817076dd5830c2a532e4d7ca9a331db12cd3e65 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
@@ -61,5 +61,12 @@ mat4 getObjectSkinnedTransform()
 	ret[3] = vec4(trans, 1.0);
 				
 	return ret;
+
+#ifdef IS_AMD_CARD
+   // If it's AMD make sure the GLSL compiler sees the arrays referenced once by static index. Otherwise it seems to optimise the storage awawy which leads to unfun crashes and artifacts.
+   mat3x4 dummy1 = matrixPalette[0];
+   mat3x4 dummy2 = matrixPalette[MAX_JOINTS_PER_MESH_OBJECT-1];
+#endif
+
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
index cde13e51044625512d0fa04a686e0366435dfbf2..08baf98686e8deabc5f013170867be8da14709e0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
@@ -110,5 +110,11 @@ void main()
     //col.y *= col.y;
     
     frag_color = max(col, vec4(0));
+
+#ifdef IS_AMD_CARD
+    // If it's AMD make sure the GLSL compiler sees the arrays referenced once by static index. Otherwise it seems to optimise the storage awawy which leads to unfun crashes and artifacts.
+    vec3 dummy1 = kern[0];
+    vec3 dummy2 = kern[3];
+#endif
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl
index 1d21db78000afb2e111d1033b48edc422aae6167..be15eba702e009f1f55e044f8092442ec1fb9d3c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl
@@ -382,14 +382,14 @@ vec3 pbrIbl(vec3 diffuseColor,
 {
     // retrieve a scale and bias to F0. See [1], Figure 3
 	vec2 brdf = BRDF(clamp(nv, 0, 1), 1.0-perceptualRough);
-    vec3 diffuseLight = irradiance;
-    vec3 specularLight = radiance;
+	vec3 diffuseLight = irradiance;
+	vec3 specularLight = radiance;
     
 	vec3 diffuse = diffuseLight * diffuseColor;
 	vec3 specular = specularLight * (specularColor * brdf.x + brdf.y);
 
-    specular *= computeSpecularAO(nv, ao, perceptualRough * perceptualRough);
-    return (diffuse * ao) + specular;
+	specular *= computeSpecularAO(nv, ao, perceptualRough * perceptualRough);
+	return (diffuse * ao) + specular;
 }
 
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
index 5d9b5eef76baf5c039374f8d8a35ae283b8bf108..54f5de5057651d9da7cf47ea8572e1a257c60e0a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
@@ -51,7 +51,6 @@ void main()
     
     vec4  norm         = texture(normalMap, tc);
 
-
     //!GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_HDRI) &&
     if (!GET_GBUFFER_FLAG(GBUFFER_FLAG_SKIP_ATMOS))
     {
diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl
index 299c4d4d9c678ea1f164ab6b6c303e59c10bbe28..ec8168465ea66cd2bad9d562e580326db4846269 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl
@@ -169,4 +169,13 @@ void main()
 
     frag_color.rgb = max(final_color, vec3(0));
     frag_color.a   = 0.0;
+
+#ifdef IS_AMD_CARD
+    // If it's AMD make sure the GLSL compiler sees the arrays referenced once by static index. Otherwise it seems to optimise the storage
+    // away which leads to unfun crashes and artifacts.
+    vec4 dummy1 = light[0];
+    vec4 dummy2 = light_col[0];
+    vec4 dummy3 = light[LIGHT_COUNT - 1];
+    vec4 dummy4 = light_col[LIGHT_COUNT - 1];
+#endif
 }