From d5fa09714383dc84416aa5ebe0ecff158bd62cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 7 Jan 2016 17:52:27 +0100 Subject: [PATCH] Don't do shader validation in GL tests on OSX. Apple wants insane amount of state to return true (bound FB, bound VAO, etc.). Ugh. --- .../Test/DistanceFieldVectorGLTest.cpp | 14 ++++- src/Magnum/Shaders/Test/FlatGLTest.cpp | 28 ++++++++-- .../Shaders/Test/MeshVisualizerGLTest.cpp | 21 ++++++- src/Magnum/Shaders/Test/PhongGLTest.cpp | 56 ++++++++++++++++--- src/Magnum/Shaders/Test/VectorGLTest.cpp | 14 ++++- src/Magnum/Shaders/Test/VertexColorGLTest.cpp | 14 ++++- .../Test/AbstractShaderProgramGLTest.cpp | 21 ++++++- 7 files changed, 144 insertions(+), 24 deletions(-) diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp index 680f8e133..838a60d18 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp @@ -42,12 +42,22 @@ DistanceFieldVectorGLTest::DistanceFieldVectorGLTest() { void DistanceFieldVectorGLTest::compile2D() { Shaders::DistanceFieldVector2D shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void DistanceFieldVectorGLTest::compile3D() { Shaders::DistanceFieldVector3D shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } }}} diff --git a/src/Magnum/Shaders/Test/FlatGLTest.cpp b/src/Magnum/Shaders/Test/FlatGLTest.cpp index 2991b5a67..8310d4a26 100644 --- a/src/Magnum/Shaders/Test/FlatGLTest.cpp +++ b/src/Magnum/Shaders/Test/FlatGLTest.cpp @@ -46,22 +46,42 @@ FlatGLTest::FlatGLTest() { void FlatGLTest::compile2D() { Shaders::Flat2D shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void FlatGLTest::compile3D() { Shaders::Flat3D shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void FlatGLTest::compile2DTextured() { Shaders::Flat2D shader(Shaders::Flat2D::Flag::Textured); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void FlatGLTest::compile3DTextured() { Shaders::Flat3D shader(Shaders::Flat3D::Flag::Textured); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } }}} diff --git a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp index 3e2b355dc..d6d203d41 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp @@ -50,7 +50,12 @@ MeshVisualizerGLTest::MeshVisualizerGLTest() { void MeshVisualizerGLTest::compile() { Shaders::MeshVisualizer shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } #if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL) @@ -69,13 +74,23 @@ void MeshVisualizerGLTest::compileWireframeGeometryShader() { #endif Shaders::MeshVisualizer shader(Shaders::MeshVisualizer::Flag::Wireframe); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } #endif void MeshVisualizerGLTest::compileWireframeNoGeometryShader() { Shaders::MeshVisualizer shader(Shaders::MeshVisualizer::Flag::Wireframe|Shaders::MeshVisualizer::Flag::NoGeometryShader); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } }}} diff --git a/src/Magnum/Shaders/Test/PhongGLTest.cpp b/src/Magnum/Shaders/Test/PhongGLTest.cpp index ccdbb33d4..1cbb15dca 100644 --- a/src/Magnum/Shaders/Test/PhongGLTest.cpp +++ b/src/Magnum/Shaders/Test/PhongGLTest.cpp @@ -54,42 +54,82 @@ PhongGLTest::PhongGLTest() { void PhongGLTest::compile() { Shaders::Phong shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void PhongGLTest::compileAmbientTexture() { Shaders::Phong shader(Shaders::Phong::Flag::AmbientTexture); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void PhongGLTest::compileDiffuseTexture() { Shaders::Phong shader(Shaders::Phong::Flag::DiffuseTexture); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void PhongGLTest::compileSpecularTexture() { Shaders::Phong shader(Shaders::Phong::Flag::SpecularTexture); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void PhongGLTest::compileAmbientDiffuseTexture() { Shaders::Phong shader(Shaders::Phong::Flag::AmbientTexture|Shaders::Phong::Flag::DiffuseTexture); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void PhongGLTest::compileAmbientSpecularTexture() { Shaders::Phong shader(Shaders::Phong::Flag::AmbientTexture|Shaders::Phong::Flag::SpecularTexture); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void PhongGLTest::compileDiffuseSpecularTexture() { Shaders::Phong shader(Shaders::Phong::Flag::DiffuseTexture|Shaders::Phong::Flag::SpecularTexture); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void PhongGLTest::compileAmbientDiffuseSpecularTexture() { Shaders::Phong shader(Shaders::Phong::Flag::AmbientTexture|Shaders::Phong::Flag::DiffuseTexture|Shaders::Phong::Flag::SpecularTexture); - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } }}} diff --git a/src/Magnum/Shaders/Test/VectorGLTest.cpp b/src/Magnum/Shaders/Test/VectorGLTest.cpp index ca78e7150..1303ed85f 100644 --- a/src/Magnum/Shaders/Test/VectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VectorGLTest.cpp @@ -42,12 +42,22 @@ VectorGLTest::VectorGLTest() { void VectorGLTest::compile2D() { Shaders::Vector2D shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void VectorGLTest::compile3D() { Shaders::Vector3D shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } }}} diff --git a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp index 05b568c39..9d7958d9c 100644 --- a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp @@ -42,12 +42,22 @@ VertexColorGLTest::VertexColorGLTest() { void VertexColorGLTest::compile2D() { Shaders::VertexColor2D shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } void VertexColorGLTest::compile3D() { Shaders::VertexColor3D shader; - CORRADE_VERIFY(shader.validate().first); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(shader.validate().first); + } } }}} diff --git a/src/Magnum/Test/AbstractShaderProgramGLTest.cpp b/src/Magnum/Test/AbstractShaderProgramGLTest.cpp index e3f97fc7f..259ad94d2 100644 --- a/src/Magnum/Test/AbstractShaderProgramGLTest.cpp +++ b/src/Magnum/Test/AbstractShaderProgramGLTest.cpp @@ -197,7 +197,12 @@ void AbstractShaderProgramGLTest::create() { MAGNUM_VERIFY_NO_ERROR(); CORRADE_VERIFY(linked); - CORRADE_VERIFY(valid); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(valid); + } const Int matrixUniform = program.uniformLocation("matrix"); const Int multiplierUniform = program.uniformLocation("multiplier"); @@ -252,7 +257,12 @@ void AbstractShaderProgramGLTest::createMultipleOutputs() { MAGNUM_VERIFY_NO_ERROR(); CORRADE_VERIFY(linked); - CORRADE_VERIFY(valid); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(valid); + } #elif !defined(MAGNUM_TARGET_GLES2) CORRADE_SKIP("Only explicit location specification supported in ES 3.0."); #else @@ -301,7 +311,12 @@ void AbstractShaderProgramGLTest::createMultipleOutputsIndexed() { MAGNUM_VERIFY_NO_ERROR(); CORRADE_VERIFY(linked); - CORRADE_VERIFY(valid); + { + #ifdef CORRADE_TARGET_APPLE + CORRADE_EXPECT_FAIL("OSX drivers need insane amount of state to validate properly."); + #endif + CORRADE_VERIFY(valid); + } } #endif