diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp index b75dd72eb..6319f8d4a 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp @@ -156,7 +156,9 @@ constexpr struct { {"classic fallback", {}, 1, 1}, {"", DistanceFieldVectorGL2D::Flag::UniformBuffers, 1, 1}, {"texture transformation", DistanceFieldVectorGL2D::Flag::UniformBuffers|DistanceFieldVectorGL2D::Flag::TextureTransformation, 1, 1}, - {"multiple materials, draws", DistanceFieldVectorGL2D::Flag::UniformBuffers, 64, 128}, + /* SwiftShader has 256 uniform vectors at most, per-draw is 4+1 in 3D case + and 3+1 in 2D, per-material 4 */ + {"multiple materials, draws", DistanceFieldVectorGL2D::Flag::UniformBuffers, 16, 48}, }; constexpr struct { diff --git a/src/Magnum/Shaders/Test/FlatGLTest.cpp b/src/Magnum/Shaders/Test/FlatGLTest.cpp index 715026036..39f2eeaa2 100644 --- a/src/Magnum/Shaders/Test/FlatGLTest.cpp +++ b/src/Magnum/Shaders/Test/FlatGLTest.cpp @@ -199,7 +199,9 @@ constexpr struct { } ConstructUniformBuffersData[]{ {"classic fallback", {}, 1}, {"", FlatGL2D::Flag::UniformBuffers, 1}, - {"multiple draws", FlatGL2D::Flag::UniformBuffers, 128}, + /* SwiftShader has 256 uniform vectors at most, per-draw is 4+2 in 3D case + and 3+2 in 2D */ + {"multiple draws", FlatGL2D::Flag::UniformBuffers, 42}, {"texture transformation", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::Textured|FlatGL2D::Flag::TextureTransformation, 1}, {"alpha mask", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::AlphaMask, 1}, {"object ID", FlatGL2D::Flag::UniformBuffers|FlatGL2D::Flag::ObjectId, 1} diff --git a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp index 7caf1d2f4..3aec29ec1 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp @@ -215,7 +215,9 @@ constexpr struct { } ConstructUniformBuffersData2D[] { {"classic fallback", MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 1, 1}, {"", MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 1, 1}, - {"multiple materials, draws", MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 64, 128}, + /* SwiftShader has 256 uniform vectors at most, per-2D-draw is 4, + per-material 4, two need to be left for drawOffset + viewportSize */ + {"multiple materials, draws", MeshVisualizerGL2D::Flag::UniformBuffers|MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, 8, 55}, /* The rest is basically a copy of ConstructData2D with UniformBuffers added */ #ifndef MAGNUM_TARGET_WEBGL @@ -271,7 +273,9 @@ constexpr struct { } ConstructUniformBuffersData3D[] { {"classic fallback", MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 1, 1}, {"", MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 1, 1}, - {"multiple materials, draws", MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 64, 128}, + /* SwiftShader has 256 uniform vectors at most, per-3D-draw is 4+4, + per-material 4, plus 4 for projection */ + {"multiple materials, draws", MeshVisualizerGL3D::Flag::UniformBuffers|MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, 6, 28}, /* The rest is basically a copy of ConstructData2D with UniformBuffers added */ #ifndef MAGNUM_TARGET_WEBGL diff --git a/src/Magnum/Shaders/Test/PhongGLTest.cpp b/src/Magnum/Shaders/Test/PhongGLTest.cpp index 520bbb120..66ba51c8d 100644 --- a/src/Magnum/Shaders/Test/PhongGLTest.cpp +++ b/src/Magnum/Shaders/Test/PhongGLTest.cpp @@ -218,8 +218,10 @@ constexpr struct { } ConstructUniformBuffersData[]{ {"classic fallback", {}, 1, 1, 1}, {"", PhongGL::Flag::UniformBuffers, 1, 1, 1}, - {"multiple lights, materials, draws", PhongGL::Flag::UniformBuffers, 30, 64, 128}, - {"zero lights", PhongGL::Flag::UniformBuffers, 0, 64, 128}, + /* SwiftShader has 256 uniform vectors at most, per-3D-draw is 4+4, + per-material 4, per-light 4 plus 4 for projection */ + {"multiple lights, materials, draws", PhongGL::Flag::UniformBuffers, 8, 8, 24}, + {"zero lights", PhongGL::Flag::UniformBuffers, 0, 16, 24}, {"ambient + diffuse + specular texture", PhongGL::Flag::UniformBuffers|PhongGL::Flag::AmbientTexture|PhongGL::Flag::DiffuseTexture|PhongGL::Flag::SpecularTexture, 1, 1, 1}, {"ambient + diffuse + specular texture + texture transformation", PhongGL::Flag::UniformBuffers|PhongGL::Flag::AmbientTexture|PhongGL::Flag::DiffuseTexture|PhongGL::Flag::SpecularTexture|PhongGL::Flag::TextureTransformation, 1, 1, 1}, {"normal texture", PhongGL::Flag::UniformBuffers|PhongGL::Flag::NormalTexture, 1, 1, 1}, diff --git a/src/Magnum/Shaders/Test/VectorGLTest.cpp b/src/Magnum/Shaders/Test/VectorGLTest.cpp index 9474bec3e..0d492b8e1 100644 --- a/src/Magnum/Shaders/Test/VectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VectorGLTest.cpp @@ -155,7 +155,9 @@ constexpr struct { {"classic fallback", {}, 1}, {"", VectorGL2D::Flag::UniformBuffers, 1}, {"texture transformation", VectorGL2D::Flag::UniformBuffers|VectorGL2D::Flag::TextureTransformation, 1}, - {"multiple draws", VectorGL2D::Flag::UniformBuffers, 128}, + /* SwiftShader has 256 uniform vectors at most, per-draw is 4+3 in 3D case + and 3+3 in 2D */ + {"multiple draws", VectorGL2D::Flag::UniformBuffers, 36}, }; #endif diff --git a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp index 43fc382b6..e9011fe62 100644 --- a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp @@ -132,7 +132,9 @@ constexpr struct { } ConstructUniformBuffersData[]{ {"classic fallback", {}, 1}, {"", VertexColorGL2D::Flag::UniformBuffers, 1}, - {"multiple draws", VertexColorGL2D::Flag::UniformBuffers, 128} + /* SwiftShader has 256 uniform vectors at most, per-draw is 4 in 3D case + and 3 in 2D; one needs to be reserved for drawOffset */ + {"multiple draws", VertexColorGL2D::Flag::UniformBuffers, 63} }; #endif