From fef46953ec11dfd559e029e5fd361b6052c80477 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 7 Sep 2015 19:04:14 +0200 Subject: [PATCH] Define-out precision qualifiers in test shaders for GLSL 1.20. Causes the errors to abort on AMD cards. --- .../AbstractShaderProgramGLTestFiles/MyShader.frag | 4 ++++ .../AbstractShaderProgramGLTestFiles/MyShader.vert | 4 ++++ src/Magnum/Test/MeshGLTest.cpp | 13 +++++++++++-- src/Magnum/Test/PrimitiveQueryGLTest.cpp | 3 +++ src/Magnum/Test/SampleQueryGLTest.cpp | 3 +++ 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.frag b/src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.frag index 39b15b1a2..c15b54a91 100644 --- a/src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.frag +++ b/src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.frag @@ -1,3 +1,7 @@ +#if !defined(GL_ES) && __VERSION__ == 120 +#define lowp +#endif + uniform lowp float multiplier; uniform lowp vec4 color; uniform lowp vec4 additions[3]; diff --git a/src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.vert b/src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.vert index 3d2907e68..5d8ff9029 100644 --- a/src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.vert +++ b/src/Magnum/Test/AbstractShaderProgramGLTestFiles/MyShader.vert @@ -1,3 +1,7 @@ +#if !defined(GL_ES) && __VERSION__ == 120 +#define mediump +#endif + attribute mediump vec4 position; uniform mediump mat4 matrix; diff --git a/src/Magnum/Test/MeshGLTest.cpp b/src/Magnum/Test/MeshGLTest.cpp index 334b2ad04..d166ec99b 100644 --- a/src/Magnum/Test/MeshGLTest.cpp +++ b/src/Magnum/Test/MeshGLTest.cpp @@ -396,6 +396,9 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion) vert.addSource( #if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2) + "#if !defined(GL_ES) && __VERSION__ == 120\n" + "#define mediump\n" + "#endif\n" "attribute mediump " + type + " value;\n" "varying mediump " + type + " valueInterpolated;\n" #else @@ -408,7 +411,10 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion) "}\n"); #if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2) - frag.addSource("varying mediump " + type + " valueInterpolated;\n" + frag.addSource("#if !defined(GL_ES) && __VERSION__ == 120\n" + "#define mediump\n" + "#endif\n" + "varying mediump " + type + " valueInterpolated;\n" "void main() { gl_FragColor = " + conversion + "; }\n"); #else frag.addSource("in mediump " + type + " valueInterpolated;\n" @@ -1141,7 +1147,10 @@ MultipleShader::MultipleShader() { Shader frag(Version::GLES200, Shader::Type::Fragment); #endif - vert.addSource("attribute mediump vec4 position;\n" + vert.addSource("#if !defined(GL_ES) && __VERSION__ == 120\n" + "#define mediump\n" + "#endif\n" + "attribute mediump vec4 position;\n" "attribute mediump vec3 normal;\n" "attribute mediump vec2 textureCoordinates;\n" "varying mediump vec4 valueInterpolated;\n" diff --git a/src/Magnum/Test/PrimitiveQueryGLTest.cpp b/src/Magnum/Test/PrimitiveQueryGLTest.cpp index e6d105a7c..fe8e51272 100644 --- a/src/Magnum/Test/PrimitiveQueryGLTest.cpp +++ b/src/Magnum/Test/PrimitiveQueryGLTest.cpp @@ -102,6 +102,9 @@ void PrimitiveQueryGLTest::primitivesGenerated() { Shader vert(Version::GL210, Shader::Type::Vertex); CORRADE_INTERNAL_ASSERT_OUTPUT(vert.addSource( + "#if !defined(GL_ES) && __VERSION__ == 120\n" + "#define lowp\n" + "#endif\n" "attribute lowp vec4 position;\n" "void main() {\n" " gl_Position = position;\n" diff --git a/src/Magnum/Test/SampleQueryGLTest.cpp b/src/Magnum/Test/SampleQueryGLTest.cpp index fbb7e91db..55072128f 100644 --- a/src/Magnum/Test/SampleQueryGLTest.cpp +++ b/src/Magnum/Test/SampleQueryGLTest.cpp @@ -119,6 +119,9 @@ MyShader::MyShader() { #endif vert.addSource( + "#if !defined(GL_ES) && __VERSION__ == 120\n" + "#define lowp\n" + "#endif\n" "attribute lowp vec4 position;\n" "void main() {\n" " gl_Position = position;\n"