|
|
|
@ -23,6 +23,8 @@ |
|
|
|
DEALINGS IN THE SOFTWARE. |
|
|
|
DEALINGS IN THE SOFTWARE. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <Corrade/Utility/Format.h> |
|
|
|
|
|
|
|
|
|
|
|
#include "Magnum/GL/OpenGLTester.h" |
|
|
|
#include "Magnum/GL/OpenGLTester.h" |
|
|
|
#include "Magnum/Shaders/Flat.h" |
|
|
|
#include "Magnum/Shaders/Flat.h" |
|
|
|
|
|
|
|
|
|
|
|
@ -31,60 +33,41 @@ namespace Magnum { namespace Shaders { namespace Test { |
|
|
|
struct FlatGLTest: GL::OpenGLTester { |
|
|
|
struct FlatGLTest: GL::OpenGLTester { |
|
|
|
explicit FlatGLTest(); |
|
|
|
explicit FlatGLTest(); |
|
|
|
|
|
|
|
|
|
|
|
void construct2D(); |
|
|
|
template<UnsignedInt dimensions> void construct(); |
|
|
|
void construct3D(); |
|
|
|
|
|
|
|
void construct2DTextured(); |
|
|
|
|
|
|
|
void construct3DTextured(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void constructMove2D(); |
|
|
|
template<UnsignedInt dimensions> void constructMove(); |
|
|
|
void constructMove3D(); |
|
|
|
|
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
FlatGLTest::FlatGLTest() { |
|
|
|
namespace { |
|
|
|
addTests({&FlatGLTest::construct2D, |
|
|
|
|
|
|
|
&FlatGLTest::construct3D, |
|
|
|
|
|
|
|
&FlatGLTest::construct2DTextured, |
|
|
|
|
|
|
|
&FlatGLTest::construct3DTextured, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&FlatGLTest::constructMove2D, |
|
|
|
constexpr struct { |
|
|
|
&FlatGLTest::constructMove3D}); |
|
|
|
const char* name; |
|
|
|
} |
|
|
|
Flat2D::Flags flags; |
|
|
|
|
|
|
|
} ConstructData[]{ |
|
|
|
|
|
|
|
{"", {}}, |
|
|
|
|
|
|
|
{"textured", Flat2D::Flag::Textured} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
void FlatGLTest::construct2D() { |
|
|
|
|
|
|
|
Flat2D shader; |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
#ifdef CORRADE_TARGET_APPLE |
|
|
|
|
|
|
|
CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
CORRADE_VERIFY(shader.id()); |
|
|
|
|
|
|
|
CORRADE_VERIFY(shader.validate().first); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void FlatGLTest::construct3D() { |
|
|
|
FlatGLTest::FlatGLTest() { |
|
|
|
Flat3D shader; |
|
|
|
addInstancedTests<FlatGLTest>({ |
|
|
|
{ |
|
|
|
&FlatGLTest::construct<2>, |
|
|
|
#ifdef CORRADE_TARGET_APPLE |
|
|
|
&FlatGLTest::construct<3>}, |
|
|
|
CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); |
|
|
|
Containers::arraySize(ConstructData)); |
|
|
|
#endif |
|
|
|
|
|
|
|
CORRADE_VERIFY(shader.id()); |
|
|
|
addTests<FlatGLTest>({ |
|
|
|
CORRADE_VERIFY(shader.validate().first); |
|
|
|
&FlatGLTest::constructMove<2>, |
|
|
|
} |
|
|
|
&FlatGLTest::constructMove<3>}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void FlatGLTest::construct2DTextured() { |
|
|
|
template<UnsignedInt dimensions> void FlatGLTest::construct() { |
|
|
|
Flat2D shader(Flat2D::Flag::Textured); |
|
|
|
setTestCaseName(Utility::formatString("construct<{}>", dimensions)); |
|
|
|
{ |
|
|
|
|
|
|
|
#ifdef CORRADE_TARGET_APPLE |
|
|
|
auto&& data = ConstructData[testCaseInstanceId()]; |
|
|
|
CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); |
|
|
|
setTestCaseDescription(data.name); |
|
|
|
#endif |
|
|
|
|
|
|
|
CORRADE_VERIFY(shader.id()); |
|
|
|
|
|
|
|
CORRADE_VERIFY(shader.validate().first); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void FlatGLTest::construct3DTextured() { |
|
|
|
Flat<dimensions> shader{data.flags}; |
|
|
|
Flat3D shader(Flat3D::Flag::Textured); |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
#ifdef CORRADE_TARGET_APPLE |
|
|
|
#ifdef CORRADE_TARGET_APPLE |
|
|
|
CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); |
|
|
|
CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); |
|
|
|
@ -94,35 +77,20 @@ void FlatGLTest::construct3DTextured() { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void FlatGLTest::constructMove2D() { |
|
|
|
template<UnsignedInt dimensions> void FlatGLTest::constructMove() { |
|
|
|
Flat2D a; |
|
|
|
setTestCaseName(Utility::formatString("constructMove<{}>", dimensions)); |
|
|
|
const GLuint id = a.id(); |
|
|
|
|
|
|
|
CORRADE_VERIFY(id); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MAGNUM_VERIFY_NO_GL_ERROR(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Flat2D b{std::move(a)}; |
|
|
|
|
|
|
|
CORRADE_COMPARE(b.id(), id); |
|
|
|
|
|
|
|
CORRADE_VERIFY(!a.id()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Flat2D c{NoCreate}; |
|
|
|
|
|
|
|
c = std::move(b); |
|
|
|
|
|
|
|
CORRADE_COMPARE(c.id(), id); |
|
|
|
|
|
|
|
CORRADE_VERIFY(!b.id()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void FlatGLTest::constructMove3D() { |
|
|
|
Flat<dimensions> a; |
|
|
|
Flat3D a; |
|
|
|
|
|
|
|
const GLuint id = a.id(); |
|
|
|
const GLuint id = a.id(); |
|
|
|
CORRADE_VERIFY(id); |
|
|
|
CORRADE_VERIFY(id); |
|
|
|
|
|
|
|
|
|
|
|
MAGNUM_VERIFY_NO_GL_ERROR(); |
|
|
|
MAGNUM_VERIFY_NO_GL_ERROR(); |
|
|
|
|
|
|
|
|
|
|
|
Flat3D b{std::move(a)}; |
|
|
|
Flat<dimensions> b{std::move(a)}; |
|
|
|
CORRADE_COMPARE(b.id(), id); |
|
|
|
CORRADE_COMPARE(b.id(), id); |
|
|
|
CORRADE_VERIFY(!a.id()); |
|
|
|
CORRADE_VERIFY(!a.id()); |
|
|
|
|
|
|
|
|
|
|
|
Flat3D c{NoCreate}; |
|
|
|
Flat<dimensions> c{NoCreate}; |
|
|
|
c = std::move(b); |
|
|
|
c = std::move(b); |
|
|
|
CORRADE_COMPARE(c.id(), id); |
|
|
|
CORRADE_COMPARE(c.id(), id); |
|
|
|
CORRADE_VERIFY(!b.id()); |
|
|
|
CORRADE_VERIFY(!b.id()); |
|
|
|
|