Browse Source

GL: add XFAILs for some NVidia-specific behavior in ShaderProgram tests.

Neither of those are really critically important. Failure not being a
failure is fine (just don't make the shader broken in the first place),
multiple color output bindings should be in the shader source anyway.
pull/419/merge
Vladimír Vondruš 2 years ago
parent
commit
0f1ffe9dae
  1. 31
      src/Magnum/GL/Test/AbstractShaderProgramGLTest.cpp

31
src/Magnum/GL/Test/AbstractShaderProgramGLTest.cpp

@ -506,8 +506,15 @@ void AbstractShaderProgramGLTest::createMultipleOutputs() {
const bool valid = program.validate().first(); const bool valid = program.validate().first();
MAGNUM_VERIFY_NO_GL_ERROR(); MAGNUM_VERIFY_NO_GL_ERROR();
CORRADE_VERIFY(linked);
{ {
#ifdef MAGNUM_TARGET_GLES
CORRADE_EXPECT_FAIL_IF(Context::current().detectedDriver() & Context::DetectedDriver::NVidia,
"NVidia drivers don't take glBindFragDataLocationEXT() into account on ES.");
#endif
CORRADE_VERIFY(linked);
if(!linked)
return;
} {
#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.");
#endif #endif
@ -578,8 +585,15 @@ void AbstractShaderProgramGLTest::createMultipleOutputsIndexed() {
const bool valid = program.validate().first(); const bool valid = program.validate().first();
MAGNUM_VERIFY_NO_GL_ERROR(); MAGNUM_VERIFY_NO_GL_ERROR();
CORRADE_VERIFY(linked);
{ {
#ifdef MAGNUM_TARGET_GLES
CORRADE_EXPECT_FAIL_IF(Context::current().detectedDriver() & Context::DetectedDriver::NVidia,
"NVidia drivers don't take glBindFragDataLocationEXT() into account on ES.");
#endif
CORRADE_VERIFY(linked);
if(!linked)
return;
} {
#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.");
#endif #endif
@ -808,11 +822,14 @@ void main() {
Containers::Pair<bool, Containers::String> result = program.validate(); Containers::Pair<bool, Containers::String> result = program.validate();
MAGNUM_VERIFY_NO_GL_ERROR(); MAGNUM_VERIFY_NO_GL_ERROR();
CORRADE_VERIFY(!result.first()); {
/* The message shouldn't be empty */ CORRADE_EXPECT_FAIL_IF(Context::current().detectedDriver() & Context::DetectedDriver::NVidia, "NVidia doesn't treat conflicting sampler locations as a failure.");
CORRADE_COMPARE_AS(result.second(), CORRADE_VERIFY(!result.first());
"", /* The message shouldn't be empty */
TestSuite::Compare::NotEqual); CORRADE_COMPARE_AS(result.second(),
"",
TestSuite::Compare::NotEqual);
}
/* No stray \0 or \n should be anywhere */ /* No stray \0 or \n should be anywhere */
CORRADE_COMPARE_AS(result.second(), "\0"_s, TestSuite::Compare::StringNotContains); CORRADE_COMPARE_AS(result.second(), "\0"_s, TestSuite::Compare::StringNotContains);
CORRADE_COMPARE_AS(result.second(), "\n"_s, TestSuite::Compare::StringNotContains); CORRADE_COMPARE_AS(result.second(), "\n"_s, TestSuite::Compare::StringNotContains);

Loading…
Cancel
Save