From 025201d0c2fcfa1ccc1607f079a2f1925df4b1fc Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sun, 9 Jul 2017 17:31:07 -0300 Subject: [PATCH] Hopefully work around Array Texture intel GMA driver bug on windows (resolves issue #1265). --HG-- branch : minor --- src/modules/graphics/opengl/Graphics.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/modules/graphics/opengl/Graphics.cpp b/src/modules/graphics/opengl/Graphics.cpp index 0a978e20d..ab9afa30c 100644 --- a/src/modules/graphics/opengl/Graphics.cpp +++ b/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