diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp index 7bc32bb3e..1a821d7ba 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp @@ -50,6 +50,7 @@ #include "Magnum/GL/Mesh.h" #include "Magnum/GL/Renderbuffer.h" #include "Magnum/GL/RenderbufferFormat.h" +#include "Magnum/GL/Shader.h" #include "Magnum/GL/Texture.h" #include "Magnum/GL/TextureFormat.h" #include "Magnum/Math/Color.h" @@ -794,6 +795,10 @@ template void DistanceFieldVectorGLTest::ren if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == DistanceFieldVectorGL2D::Flag::UniformBuffers) { @@ -901,6 +906,10 @@ template void DistanceFieldVectorGLTest::ren if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == DistanceFieldVectorGL3D::Flag::UniformBuffers) { @@ -1011,6 +1020,10 @@ template void DistanceFieldVectorGLTest::ren if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & DistanceFieldVectorGL2D::Flag::TextureTransformation ? 2 : 1)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == DistanceFieldVectorGL2D::Flag::UniformBuffers) { @@ -1138,6 +1151,10 @@ template void DistanceFieldVectorGLTest::ren if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & DistanceFieldVectorGL2D::Flag::TextureTransformation ? 2 : 1)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == DistanceFieldVectorGL3D::Flag::UniformBuffers) { @@ -1274,6 +1291,10 @@ void DistanceFieldVectorGLTest::renderMulti2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -1490,6 +1511,10 @@ void DistanceFieldVectorGLTest::renderMulti3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif diff --git a/src/Magnum/Shaders/Test/FlatGLTest.cpp b/src/Magnum/Shaders/Test/FlatGLTest.cpp index eb1901362..f5bb72b0f 100644 --- a/src/Magnum/Shaders/Test/FlatGLTest.cpp +++ b/src/Magnum/Shaders/Test/FlatGLTest.cpp @@ -53,6 +53,7 @@ #include "Magnum/GL/Renderer.h" #include "Magnum/GL/Renderbuffer.h" #include "Magnum/GL/RenderbufferFormat.h" +#include "Magnum/GL/Shader.h" #include "Magnum/GL/Texture.h" #include "Magnum/GL/TextureFormat.h" #include "Magnum/GL/OpenGLTester.h" @@ -1837,6 +1838,10 @@ template void FlatGLTest::renderDefaults2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -1909,6 +1914,10 @@ template void FlatGLTest::renderDefaults3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL3D::Flag::UniformBuffers) { @@ -1981,6 +1990,10 @@ template void FlatGLTest::renderColored2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -2063,6 +2076,10 @@ template void FlatGLTest::renderColored3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL3D::Flag::UniformBuffers) { @@ -2173,6 +2190,10 @@ template void FlatGLTest::renderSinglePixelTextured2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & FlatGL2D::Flag::TextureTransformation ? 3 : 2)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -2304,6 +2325,10 @@ template void FlatGLTest::renderSinglePixelTextured3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & FlatGL2D::Flag::TextureTransformation ? 3 : 2)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL3D::Flag::UniformBuffers) { @@ -2445,6 +2470,10 @@ template void FlatGLTest::renderTextured2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & FlatGL2D::Flag::TextureTransformation ? 3 : 2)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -2590,6 +2619,10 @@ template void FlatGLTest::renderTextured3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & FlatGL2D::Flag::TextureTransformation ? 3 : 2)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL3D::Flag::UniformBuffers) { @@ -2742,6 +2775,10 @@ template void FlatGLTest::renderVertexColor2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -2850,6 +2887,10 @@ template void FlatGLTest::renderVertexColor3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL3D::Flag::UniformBuffers) { @@ -2984,6 +3025,10 @@ template void FlatGLTest::renderAlpha2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -3089,6 +3134,10 @@ template void FlatGLTest::renderAlpha3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -3215,6 +3264,10 @@ template void FlatGLTest::renderObjectId2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -3376,6 +3429,10 @@ template void FlatGLTest::renderObjectId3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL3D::Flag::UniformBuffers) { @@ -3563,6 +3620,10 @@ template void FlatGLTest::renderSkinning2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -3713,6 +3774,10 @@ template void FlatGLTest::renderSkinning3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -3859,6 +3924,10 @@ template void FlatGLTest::renderInstanced2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -4200,6 +4269,10 @@ template void FlatGLTest::renderInstanced3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -4546,6 +4619,10 @@ template void FlatGLTest::renderInstancedSkinning2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL2D::Flag::UniformBuffers) { @@ -4692,6 +4769,10 @@ template void FlatGLTest::renderInstancedSkinning3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == FlatGL3D::Flag::UniformBuffers) { @@ -4847,6 +4928,10 @@ void FlatGLTest::renderMulti2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -5208,6 +5293,10 @@ void FlatGLTest::renderMulti3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -5574,6 +5663,10 @@ void FlatGLTest::renderMultiSkinning2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -5822,6 +5915,10 @@ void FlatGLTest::renderMultiSkinning3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif diff --git a/src/Magnum/Shaders/Test/LineGLTest.cpp b/src/Magnum/Shaders/Test/LineGLTest.cpp index 9acf20d8e..6df762a62 100644 --- a/src/Magnum/Shaders/Test/LineGLTest.cpp +++ b/src/Magnum/Shaders/Test/LineGLTest.cpp @@ -46,6 +46,7 @@ #include "Magnum/GL/OpenGLTester.h" #include "Magnum/GL/Renderbuffer.h" #include "Magnum/GL/RenderbufferFormat.h" +#include "Magnum/GL/Shader.h" #include "Magnum/Math/Color.h" #include "Magnum/Math/Complex.h" #include "Magnum/Math/FunctionsBatch.h" @@ -1179,6 +1180,10 @@ template void LineGLTest::renderDefaults2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL2D::Flag::UniformBuffers) { @@ -1270,6 +1275,10 @@ template void LineGLTest::renderDefaults3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL3D::Flag::UniformBuffers) { @@ -1417,6 +1426,10 @@ template void LineGLTest::renderLineCapsJoins2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL2D::Flag::UniformBuffers) { @@ -1651,6 +1664,10 @@ template void LineGLTest::renderCube3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL3D::Flag::UniformBuffers) { @@ -1884,6 +1901,10 @@ template void LineGLTest::renderVertexColor2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL2D::Flag::UniformBuffers) { @@ -1991,6 +2012,10 @@ template void LineGLTest::renderVertexColor3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL3D::Flag::UniformBuffers) { @@ -2104,6 +2129,10 @@ template void LineGLTest::renderObjectId2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL3D::Flag::UniformBuffers) { @@ -2208,6 +2237,10 @@ template void LineGLTest::renderObjectId3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL3D::Flag::UniformBuffers) { @@ -2314,6 +2347,10 @@ template void LineGLTest::renderInstanced2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL3D::Flag::UniformBuffers) { @@ -2466,6 +2503,10 @@ template void LineGLTest::renderInstanced3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == LineGL3D::Flag::UniformBuffers) { @@ -2623,6 +2664,10 @@ void LineGLTest::renderMulti2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -2851,6 +2896,10 @@ void LineGLTest::renderMulti3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif diff --git a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp index bb57954b1..630e25733 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp @@ -52,6 +52,7 @@ #include "Magnum/GL/Mesh.h" #include "Magnum/GL/Renderbuffer.h" #include "Magnum/GL/RenderbufferFormat.h" +#include "Magnum/GL/Shader.h" #include "Magnum/GL/Texture.h" #include "Magnum/GL/TextureFormat.h" #include "Magnum/Image.h" @@ -3187,6 +3188,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { setTestCaseTemplateName("Flag::UniformBuffers"); @@ -3301,6 +3306,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { setTestCaseTemplateName("Flag::UniformBuffers"); @@ -3426,6 +3435,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { @@ -3498,6 +3511,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { @@ -3578,6 +3595,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { @@ -3673,6 +3694,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { @@ -3769,6 +3794,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { @@ -3839,6 +3868,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { @@ -3913,6 +3946,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { @@ -4013,6 +4050,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { @@ -4118,6 +4159,10 @@ template void MeshVisualizerGLTest::renderDefault if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { setTestCaseTemplateName("Flag::UniformBuffers"); @@ -4200,6 +4245,10 @@ template void MeshVisualizerGLTest::renderWirefra if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { @@ -4351,6 +4400,10 @@ template void MeshVisualizerGLTest::renderWirefra if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { @@ -4518,6 +4571,10 @@ template void MeshVisualizerGLTest::renderObjectV if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { @@ -4729,6 +4786,10 @@ template void MeshVisualizerGLTest::renderObjectV if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { @@ -5000,6 +5061,10 @@ template void MeshVisualizerGLTest::renderTangent if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { setTestCaseTemplateName("Flag::UniformBuffers"); @@ -5215,6 +5280,10 @@ template void MeshVisualizerGLTest::renderSkinnin if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 4) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { @@ -5371,6 +5440,10 @@ template void MeshVisualizerGLTest::renderSkinnin if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 4) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { @@ -5528,6 +5601,10 @@ template void MeshVisualizerGLTest::renderInstanc if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { @@ -5821,6 +5898,10 @@ template void MeshVisualizerGLTest::renderInstanc if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { @@ -6146,6 +6227,10 @@ template void MeshVisualizerGLTest::renderInstanc if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL2D::Flag::UniformBuffers) { @@ -6299,6 +6384,10 @@ template void MeshVisualizerGLTest::renderInstanc if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == MeshVisualizerGL3D::Flag::UniformBuffers) { @@ -6470,6 +6559,10 @@ void MeshVisualizerGLTest::renderMulti2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -6805,6 +6898,10 @@ void MeshVisualizerGLTest::renderMulti3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -7144,6 +7241,10 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 4) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -7390,6 +7491,10 @@ void MeshVisualizerGLTest::renderMultiSkinningWireframe3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 4) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif diff --git a/src/Magnum/Shaders/Test/PhongGLTest.cpp b/src/Magnum/Shaders/Test/PhongGLTest.cpp index 6f5f4ffe7..146f703f2 100644 --- a/src/Magnum/Shaders/Test/PhongGLTest.cpp +++ b/src/Magnum/Shaders/Test/PhongGLTest.cpp @@ -54,6 +54,7 @@ #include "Magnum/GL/Renderer.h" #include "Magnum/GL/Renderbuffer.h" #include "Magnum/GL/RenderbufferFormat.h" +#include "Magnum/GL/Shader.h" #include "Magnum/GL/Texture.h" #include "Magnum/GL/TextureFormat.h" #include "Magnum/Math/Color.h" @@ -2299,6 +2300,10 @@ template void PhongGLTest::renderDefaults() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -2394,6 +2399,10 @@ template void PhongGLTest::renderColored() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -2545,6 +2554,10 @@ template void PhongGLTest::renderSinglePixelTextured() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & PhongGL::Flag::TextureTransformation ? 4 : 3)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -2753,6 +2766,10 @@ template void PhongGLTest::renderTextured() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & PhongGL::Flag::TextureTransformation ? 4 : 3)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -3007,6 +3024,10 @@ template void PhongGLTest::renderTexturedNormal() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & PhongGL::Flag::TextureTransformation ? 4 : 3)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -3221,6 +3242,10 @@ template void PhongGLTest::renderVertexColor() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -3370,6 +3395,10 @@ template void PhongGLTest::renderShininess() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -3542,6 +3571,10 @@ template void PhongGLTest::renderAlpha() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -3713,6 +3746,10 @@ template void PhongGLTest::renderObjectId() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & PhongGL::Flag::TextureTransformation ? 4 : 3)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -3907,6 +3944,10 @@ template void PhongGLTest::renderLights() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -4144,6 +4185,10 @@ void PhongGLTest::renderLightCulling() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -4231,6 +4276,10 @@ template void PhongGLTest::renderZeroLights() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag >= PhongGL::Flag::UniformBuffers) { @@ -4516,6 +4565,10 @@ template void PhongGLTest::renderSkinning() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 4) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -4671,6 +4724,10 @@ template void PhongGLTest::renderInstanced() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -5113,6 +5170,10 @@ template void PhongGLTest::renderInstancedSkinning() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == PhongGL::Flag::UniformBuffers) { @@ -5275,6 +5336,10 @@ void PhongGLTest::renderMulti() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 3) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -5685,6 +5750,10 @@ void PhongGLTest::renderMultiSkinning() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 4) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif diff --git a/src/Magnum/Shaders/Test/VectorGLTest.cpp b/src/Magnum/Shaders/Test/VectorGLTest.cpp index 0ecaf3333..60d292617 100644 --- a/src/Magnum/Shaders/Test/VectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VectorGLTest.cpp @@ -50,6 +50,7 @@ #include "Magnum/GL/OpenGLTester.h" #include "Magnum/GL/Renderbuffer.h" #include "Magnum/GL/RenderbufferFormat.h" +#include "Magnum/GL/Shader.h" #include "Magnum/GL/Texture.h" #include "Magnum/GL/TextureFormat.h" #include "Magnum/Math/Color.h" @@ -785,6 +786,10 @@ template void VectorGLTest::renderDefaults2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == VectorGL2D::Flag::UniformBuffers) { @@ -883,6 +888,10 @@ template void VectorGLTest::renderDefaults3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == VectorGL3D::Flag::UniformBuffers) { @@ -984,6 +993,10 @@ template void VectorGLTest::render2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & VectorGL2D::Flag::TextureTransformation ? 2 : 1)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == VectorGL2D::Flag::UniformBuffers) { @@ -1108,6 +1121,10 @@ template void VectorGLTest::render3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < (data.flags & VectorGL2D::Flag::TextureTransformation ? 2 : 1)) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == VectorGL3D::Flag::UniformBuffers) { @@ -1239,6 +1256,10 @@ void VectorGLTest::renderMulti2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -1455,6 +1476,10 @@ void VectorGLTest::renderMulti3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 2) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif diff --git a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp index 0febaf758..4f07d039d 100644 --- a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp @@ -47,6 +47,7 @@ #include "Magnum/GL/OpenGLTester.h" #include "Magnum/GL/Framebuffer.h" #include "Magnum/GL/Mesh.h" +#include "Magnum/GL/Shader.h" #include "Magnum/GL/Renderbuffer.h" #include "Magnum/GL/RenderbufferFormat.h" #include "Magnum/Math/Color.h" @@ -650,6 +651,10 @@ template void VertexColorGLTest::renderDefa if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == VertexColorGL2D::Flag::UniformBuffers) { @@ -731,6 +736,10 @@ template void VertexColorGLTest::renderDefa if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == VertexColorGL2D::Flag::UniformBuffers) { @@ -812,6 +821,10 @@ template void VertexColorGLTest::render2D() if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == VertexColorGL2D::Flag::UniformBuffers) { @@ -898,6 +911,10 @@ template void VertexColorGLTest::render3D() if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } else #endif if(flag == VertexColorGL3D::Flag::UniformBuffers) { @@ -999,6 +1016,10 @@ void VertexColorGLTest::renderMulti2D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif @@ -1141,6 +1162,10 @@ void VertexColorGLTest::renderMulti3D() { if(!GL::Context::current().isVersionSupported(GL::Version::GLES310)) CORRADE_SKIP(GL::Version::GLES310 << "is not supported."); #endif + + /* Some drivers (ARM Mali-G71) don't support SSBOs in vertex shaders */ + if(GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) < 1) + CORRADE_SKIP("Only" << GL::Shader::maxShaderStorageBlocks(GL::Shader::Type::Vertex) << "shader storage blocks supported in vertex shaders."); } #endif