From a5f662072dcc9d16843e5f13d8f66b80f6835e58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 23 May 2021 16:00:09 +0200 Subject: [PATCH] Shaders: update notes about what platforms got tested. Besides expanding the tested platform set and updating thresholds where needed, it makes more sense to list what is tested than what is not, because when I forget to update the list it looks like I tested while I did not. --- .../Test/DistanceFieldVectorGLTest.cpp | 38 +++++++--- src/Magnum/Shaders/Test/FlatGLTest.cpp | 44 +++++++---- .../Shaders/Test/MeshVisualizerGLTest.cpp | 76 ++++++++++++++----- src/Magnum/Shaders/Test/PhongGLTest.cpp | 55 +++++++++----- src/Magnum/Shaders/Test/VectorGLTest.cpp | 38 +++++++--- src/Magnum/Shaders/Test/VertexColorGLTest.cpp | 37 ++++++--- 6 files changed, 204 insertions(+), 84 deletions(-) diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp index 6319f8d4a..055cde641 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp @@ -126,15 +126,27 @@ struct DistanceFieldVectorGLTest: GL::OpenGLTester { }; /* - Rendering tests done on: - - - Mesa Intel - - Mesa AMD - - Mesa llvmpipe - - SwiftShader ES2/ES3 - - ARM Mali (Huawei P10) ES2/ES3 - - WebGL 1 / 2 (on Mesa Intel) - - iPhone 6 w/ iOS 12.4 + Rendering tests done: + + [B] base + [O] draw offset + + Mesa Intel BO + ES2 x + ES3 BO + Mesa AMD B + Mesa llvmpipe B + SwiftShader ES2 Bx + ES3 B + ARM Mali (Huawei P10) ES2 Bx + ES3 BO + WebGL (on Mesa Intel) 1.0 Bx + 2.0 BO + NVidia + Intel Windows + AMD macOS + Intel macOS BO + iPhone 6 w/ iOS 12.4 ES3 B */ using namespace Math::Literals; @@ -206,9 +218,13 @@ constexpr struct { Float maxThreshold, meanThreshold; } RenderMultiData[] { {"bind with offset", "multidraw2D-distancefield.tga", "multidraw3D-distancefield.tga", - 1, 1, 16, 0.0f, 0.0f}, + 1, 1, 16, + /* Minor differences on ARM Mali */ + 1.67f, 0.012f}, {"draw offset", "multidraw2D-distancefield.tga", "multidraw3D-distancefield.tga", - 2, 3, 1, 0.0f, 0.0f}, + 2, 3, 1, + /* Minor differences on ARM Mali */ + 1.67f, 0.012f}, }; #endif diff --git a/src/Magnum/Shaders/Test/FlatGLTest.cpp b/src/Magnum/Shaders/Test/FlatGLTest.cpp index 39f2eeaa2..6d5d4f093 100644 --- a/src/Magnum/Shaders/Test/FlatGLTest.cpp +++ b/src/Magnum/Shaders/Test/FlatGLTest.cpp @@ -155,18 +155,30 @@ struct FlatGLTest: GL::OpenGLTester { }; /* - Rendering tests done on: - - - Mesa Intel - - Mesa AMD - - Mesa llvmpipe - - SwiftShader ES2/ES3 - - ARM Mali (Huawei P10) ES2/ES3 (except instancing) - - WebGL 1 / 2 (on Mesa Intel) (except instancing) - - NVidia Windows (except instancing) - - Intel Windows (except instancing) - - AMD on macOS (except instancing) - - iPhone 6 w/ iOS 12.4 (except instancing) + Rendering tests done: + + [B] base + [A] alpha mask + [D] object ID + [I] instancing + [O] draw offset + + Mesa Intel BADIO + ES2 x + ES3 BADIO + Mesa AMD BADI + Mesa llvmpipe BADI + SwiftShader ES2 BADIx + ES3 BADI + ARM Mali (Huawei P10) ES2 BAD x + ES3 BADIO + WebGL (on Mesa Intel) 1.0 BAD x + 2.0 BADIO + NVidia BAD + Intel Windows BAD + AMD macOS BAD + Intel macOS BADIO + iPhone 6 w/ iOS 12.4 ES3 BAD */ using namespace Math::Literals; @@ -274,12 +286,16 @@ constexpr struct { {}, 1, 16, 0.0f, 0.0f}, {"bind with offset, textured", "multidraw-textured2D.tga", "multidraw-textured3D.tga", FlatGL2D::Flag::TextureTransformation|FlatGL2D::Flag::Textured, - 1, 16, 0.0f, 0.0f}, + 1, 16, + /* Minor differences on ARM Mali */ + 2.34f, 0.01f}, {"draw offset, colored", "multidraw2D.tga", "multidraw3D.tga", {}, 3, 1, 0.0f, 0.0f}, {"draw offset, textured", "multidraw-textured2D.tga", "multidraw-textured3D.tga", FlatGL2D::Flag::TextureTransformation|FlatGL2D::Flag::Textured, - 3, 1, 0.0f, 0.0f} + 3, 1, + /* Minor differences on ARM Mali */ + 2.34f, 0.01f} }; #endif diff --git a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp index 3aec29ec1..8e7d462c1 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp @@ -174,15 +174,29 @@ struct MeshVisualizerGLTest: GL::OpenGLTester { }; /* - Rendering tests done on: - - - Mesa Intel - - Mesa AMD - . Mesa llvmpipe - - SwiftShader ES2/ES3 - - ARM Mali (Huawei P10) ES2/ES3 (except TBN visualization) - - WebGL 1 / 2 (on Mesa Intel) (except primitive/vertex/object ID) - - iPhone 6 w/ iOS 12.4 (except primitive/vertex/object ID) + Rendering tests done: + + [W] wireframe + [D] primitive/vertex/object ID + [T] TBN visualization + [O] draw offset + + Mesa Intel WDTO + ES2 x + ES3 + Mesa AMD WDT + Mesa llvmpipe WDT + SwiftShader ES2 WDxx + ES3 WDx + ARM Mali (Huawei P10) ES2 W xx + ES3 W O (WDT big diffs, needs investigation) + WebGL (on Mesa Intel) 1.0 W xx + 2.0 W x + NVidia + Intel Windows + AMD macOS + Intel macOS WDTO + iPhone 6 w/ iOS 12.4 ES3 W x */ using namespace Math::Literals; @@ -554,25 +568,37 @@ constexpr struct { #ifndef MAGNUM_TARGET_WEBGL {"bind with offset, wireframe", "multidraw-wireframe2D.tga", MeshVisualizerGL2D::Flag::Wireframe, - 1, 1, 16, 0.0f, 0.0f}, + 1, 1, 16, + /* Minor differences on ARM Mali */ + 0.67f, 0.01f}, #endif {"bind with offset, w/o GS", "multidraw-wireframe-nogeo2D.tga", MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, - 1, 1, 16, 0.0f, 0.0f}, + 1, 1, 16, + /* Minor differences on ARM Mali */ + 0.67f, 0.02f}, {"bind with offset, vertex ID", "multidraw-vertexid2D.tga", MeshVisualizerGL2D::Flag::VertexId, - 1, 1, 16, 0.0f, 0.0f}, + 1, 1, 16, + /* Minor differences on ARM Mali */ + 0.67f, 0.01f}, #ifndef MAGNUM_TARGET_WEBGL {"draw offset, wireframe", "multidraw-wireframe2D.tga", MeshVisualizerGL2D::Flag::Wireframe, - 2, 3, 1, 0.0f, 0.0f}, + 2, 3, 1, + /* Minor differences on ARM Mali */ + 0.67f, 0.01f}, #endif {"draw offset, wireframe w/o GS", "multidraw-wireframe-nogeo2D.tga", MeshVisualizerGL2D::Flag::Wireframe|MeshVisualizerGL2D::Flag::NoGeometryShader, - 2, 3, 1, 0.0f, 0.0f}, + 2, 3, 1, + /* Minor differences on ARM Mali */ + 0.67f, 0.02f}, {"draw offset, vertex ID", "multidraw-vertexid2D.tga", MeshVisualizerGL2D::Flag::VertexId, - 2, 3, 1, 0.0f, 0.0f} + 2, 3, 1, + /* Minor differences on ARM Mali */ + 0.67f, 0.01f}, }; constexpr struct { @@ -593,10 +619,14 @@ constexpr struct { #endif {"bind with offset, wireframe w/o GS", "multidraw-wireframe-nogeo3D.tga", MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, - 1, 1, 16, 0.0f, 0.0f}, + 1, 1, 16, + /* Minor differences on ARM Mali */ + 6.0f, 0.04f}, {"bind with offset, vertex ID", "multidraw-vertexid3D.tga", MeshVisualizerGL3D::Flag::VertexId, - 1, 1, 16, 0.0f, 0.0f}, + 1, 1, 16, + /* Minor differences on ARM Mali */ + 0.67f, 0.01f}, #ifndef MAGNUM_TARGET_WEBGL {"draw offset, wireframe", "multidraw-wireframe3D.tga", MeshVisualizerGL3D::Flag::Wireframe, @@ -607,10 +637,14 @@ constexpr struct { #endif {"draw offset, wireframe w/o GS", "multidraw-wireframe-nogeo3D.tga", MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader, - 2, 3, 1, 0.0f, 0.0f}, + 2, 3, 1, + /* Minor differences on ARM Mali */ + 6.0f, 0.04f}, {"draw offset, vertex ID", "multidraw-vertexid3D.tga", MeshVisualizerGL3D::Flag::VertexId, - 2, 3, 1, 0.0f, 0.0f} + 2, 3, 1, + /* Minor differences on ARM Mali */ + 0.67f, 0.01f}, }; #endif @@ -3084,8 +3118,8 @@ template void MeshVisualizerGLTest::renderTangent Float maxThreshold = 1.334f, meanThreshold = 0.018f; #ifdef MAGNUM_TARGET_GLES if(!GL::Context::current().isExtensionSupported()) { - maxThreshold = 39.0f; - meanThreshold = 1.207f; + maxThreshold = 58.0f; + meanThreshold = 1.547f; } #endif CORRADE_COMPARE_WITH( diff --git a/src/Magnum/Shaders/Test/PhongGLTest.cpp b/src/Magnum/Shaders/Test/PhongGLTest.cpp index 6c141d5fd..c82f7944f 100644 --- a/src/Magnum/Shaders/Test/PhongGLTest.cpp +++ b/src/Magnum/Shaders/Test/PhongGLTest.cpp @@ -162,18 +162,31 @@ struct PhongGLTest: GL::OpenGLTester { }; /* - Rendering tests done on: - - - Mesa Intel - - Mesa AMD - . Mesa llvmpipe - - SwiftShader ES2/ES3 - - ARM Mali (Huawei P10) ES2/ES3 (except instancing) - - WebGL 1 / 2 (on Mesa Intel) (except instancing) - - NVidia Windows (except instancing) - - Intel Windows (except instancing) - - AMD on macOS (except instancing) - - iPhone 6 w/ iOS 12.4 (except instancing) + Rendering tests done: + + [B] base + [A] alpha mask + [D] object ID + [L] point lights + [I] instancing + [O] draw offset + + Mesa Intel BADLIO + ES2 x + ES3 BADLIO + Mesa AMD BAD I + Mesa llvmpipe BAD I + SwiftShader ES2 BADLIx + ES3 BADLI + ARM Mali (Huawei P10) ES2 BAD x + ES3 BADLIO + WebGL (on Mesa Intel) 1.0 BAD x + 2.0 BADLIO + NVidia BAD + Intel Windows BAD + AMD macOS BAD + Intel macOS BADLIO + iPhone 6 w/ iOS 12.4 ES3 BAD */ constexpr struct { @@ -565,16 +578,24 @@ constexpr struct { } RenderMultiData[] { {"bind with offset, colored", "multidraw.tga", {}, - 2, 1, 1, 16, 0.0f, 0.0f}, + 2, 1, 1, 16, + /* Minor differences on ARM Mali */ + 3.34f, 0.01f}, {"bind with offset, textured", "multidraw-textured.tga", PhongGL::Flag::TextureTransformation|PhongGL::Flag::DiffuseTexture, - 2, 1, 1, 16, 0.0f, 0.0f}, + 2, 1, 1, 16, + /* Minor differences on ARM Mali */ + 4.67f, 0.02f}, {"draw offset, colored", "multidraw.tga", {}, - 4, 2, 3, 1, 0.0f, 0.0f}, + 4, 2, 3, 1, + /* Minor differences on ARM Mali */ + 3.34f, 0.01f}, {"draw offset, textured", "multidraw-textured.tga", PhongGL::Flag::TextureTransformation|PhongGL::Flag::DiffuseTexture, - 4, 2, 3, 1, 0.0f, 0.0f} + 4, 2, 3, 1, + /* Minor differences on ARM Mali */ + 4.67f, 0.02f}, }; #endif @@ -2022,7 +2043,7 @@ template void PhongGLTest::renderShininess() { #elif !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL)) /* SwiftShader has some minor rounding differences (max = 1.67). ARM Mali G71 has bigger rounding differences. */ - const Float maxThreshold = 12.0f, meanThreshold = 0.043f; + const Float maxThreshold = 221.0f, meanThreshold = 0.106f; #else /* WebGL 1 doesn't have 8bit renderbuffer storage, so it's way worse */ const Float maxThreshold = 16.667f, meanThreshold = 2.583f; diff --git a/src/Magnum/Shaders/Test/VectorGLTest.cpp b/src/Magnum/Shaders/Test/VectorGLTest.cpp index 0d492b8e1..04ba121a9 100644 --- a/src/Magnum/Shaders/Test/VectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VectorGLTest.cpp @@ -125,15 +125,27 @@ struct VectorGLTest: GL::OpenGLTester { }; /* - Rendering tests done on: - - - Mesa Intel - - Mesa AMD - - Mesa llvmpipe - - SwiftShader ES2/ES3 - - ARM Mali (Huawei P10) ES2/ES3 - - WebGL 1 / 2 (on Mesa Intel) - - iPhone 6 w/ iOS 12.4 + Rendering tests done: + + [B] base + [O] draw offset + + Mesa Intel BO + ES2 x + ES3 BO + Mesa AMD B + Mesa llvmpipe B + SwiftShader ES2 Bx + ES3 B + ARM Mali (Huawei P10) ES2 Bx + ES3 BO + WebGL (on Mesa Intel) 1.0 Bx + 2.0 BO + NVidia + Intel Windows + AMD macOS + Intel macOS BO + iPhone 6 w/ iOS 12.4 ES3 B */ using namespace Math::Literals; @@ -188,9 +200,13 @@ constexpr struct { Float maxThreshold, meanThreshold; } RenderMultiData[] { {"bind with offset", "multidraw2D.tga", "multidraw3D.tga", - 1, 16, 0.0f, 0.0f}, + 1, 16, + /* Minor differences on ARM Mali */ + 1.34f, 0.02f}, {"draw offset", "multidraw2D.tga", "multidraw3D.tga", - 3, 1, 0.0f, 0.0f}, + 3, 1, + /* Minor differences on ARM Mali */ + 1.34f, 0.02f}, }; #endif diff --git a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp index e9011fe62..3179ed70f 100644 --- a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp @@ -112,14 +112,27 @@ struct VertexColorGLTest: GL::OpenGLTester { }; /* - Rendering tests done on: - - - Mesa Intel - - Mesa AMD - - SwiftShader ES2/ES3 - - ARM Mali (Huawei P10) ES2/ES3 - - WebGL 1 / 2 (on Mesa Intel) - - iPhone 6 w/ iOS 12.4 + Rendering tests done: + + [B] base + [O] draw offset + + Mesa Intel BO + ES2 x + ES3 BO + Mesa AMD B + Mesa llvmpipe B + SwiftShader ES2 Bx + ES3 B + ARM Mali (Huawei P10) ES2 Bx + ES3 BO + WebGL (on Mesa Intel) 1.0 Bx + 2.0 BO + NVidia + Intel Windows + AMD macOS + Intel macOS BO + iPhone 6 w/ iOS 12.4 ES3 B */ using namespace Math::Literals; @@ -148,9 +161,13 @@ constexpr struct { Float maxThreshold, meanThreshold; } RenderMultiData[] { {"bind with offset", "multidraw2D.tga", "multidraw3D.tga", - 1, 16, 0.0f, 0.0f}, + 1, 16, + /* Minor differences on ARM Mali */ + 0.34f, 0.01f}, {"draw offset", "multidraw2D.tga", "multidraw3D.tga", - 3, 1, 0.0f, 0.0f} + 3, 1, + /* Minor differences on ARM Mali */ + 0.34f, 0.01f}, }; #endif