Browse Source

Hopefully work around Array Texture intel GMA driver bug on windows (resolves issue #1265).

--HG--
branch : minor
Alex Szpakowski 8 years ago
parent
commit
025201d0c2
1 changed files with 14 additions and 2 deletions
  1. 14 2
      src/modules/graphics/opengl/Graphics.cpp

+ 14 - 2
src/modules/graphics/opengl/Graphics.cpp

@@ -276,8 +276,20 @@ bool Graphics::setMode(int width, int height, int pixelwidth, int pixelheight, b
 		if (i == Shader::STANDARD_ARRAY && !capabilities.textureTypes[TEXTURE_2D_ARRAY])
 			continue;
 
-		if (!Shader::standardShaders[i])
-			Shader::standardShaders[i] = newShader(defaultShaderCode[i][target][gammacorrect]);
+		// Apparently some intel GMA drivers on windows fail to compile shaders
+		// which use array textures despite claiming support for the extension.
+		try
+		{
+			if (!Shader::standardShaders[i])
+				Shader::standardShaders[i] = newShader(defaultShaderCode[i][target][gammacorrect]);
+		}
+		catch (love::Exception &)
+		{
+			if (i == Shader::STANDARD_ARRAY)
+				capabilities.textureTypes[TEXTURE_2D_ARRAY] = false;
+			else
+				throw;
+		}
 	}
 
 	// A shader should always be active, but the default shader shouldn't be