Browse Source

Shaders: skip tests with SSBOs if the GPU doesn't support them in VS.

Interesting, didn't know this kind of feature support was possible. I
guess it's still better than no GLES3.2 at all. Also, it's a phone from
2017, so probably not all that important to care about anymore anyway.
pull/168/head
Vladimír Vondruš 3 years ago
parent
commit
38b6c0fee8
  1. 25
      src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp
  2. 97
      src/Magnum/Shaders/Test/FlatGLTest.cpp
  3. 49
      src/Magnum/Shaders/Test/LineGLTest.cpp
  4. 105
      src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp
  5. 69
      src/Magnum/Shaders/Test/PhongGLTest.cpp
  6. 25
      src/Magnum/Shaders/Test/VectorGLTest.cpp
  7. 25
      src/Magnum/Shaders/Test/VertexColorGLTest.cpp

25
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<DistanceFieldVectorGL2D::Flag flag> 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<DistanceFieldVectorGL3D::Flag flag> 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<DistanceFieldVectorGL2D::Flag flag> 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<DistanceFieldVectorGL3D::Flag flag> 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

97
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<FlatGL2D::Flag flag> 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<FlatGL3D::Flag flag> 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<FlatGL2D::Flag flag> 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<FlatGL3D::Flag flag> 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<FlatGL2D::Flag flag> 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<FlatGL3D::Flag flag> 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<FlatGL2D::Flag flag> 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<FlatGL3D::Flag flag> 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<class T, FlatGL2D::Flag flag> 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<class T, FlatGL2D::Flag flag> 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<FlatGL2D::Flag flag> 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<FlatGL3D::Flag flag> 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<FlatGL2D::Flag flag> 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<FlatGL3D::Flag flag> 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<FlatGL2D::Flag flag> 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<FlatGL2D::Flag flag> 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<FlatGL2D::Flag flag> 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<FlatGL3D::Flag flag> 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<FlatGL2D::Flag flag> 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<FlatGL2D::Flag flag> 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

49
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<LineGL2D::Flag flag> 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<LineGL3D::Flag flag> 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<LineGL2D::Flag flag> 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<LineGL3D::Flag flag> 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<class T, LineGL2D::Flag flag> 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<class T, LineGL3D::Flag flag> 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<LineGL2D::Flag flag> 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<LineGL3D::Flag flag> 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<LineGL2D::Flag flag> 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<LineGL3D::Flag flag> 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

105
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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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<MeshVisualizerGL2D::Flag flag> 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<MeshVisualizerGL3D::Flag flag> 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

69
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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<class T, PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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<PhongGL::Flag flag> 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

25
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<VectorGL2D::Flag flag> 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<VectorGL3D::Flag flag> 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<VectorGL2D::Flag flag> 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<VectorGL3D::Flag flag> 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

25
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<class T, VertexColorGL2D::Flag flag> 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<class T, VertexColorGL2D::Flag flag> 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<class T, VertexColorGL2D::Flag flag> 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<class T, VertexColorGL3D::Flag flag> 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

Loading…
Cancel
Save