Browse Source

Recognizing `amd-nv-no-forward-compatible-core-context` workaround.

pull/122/merge
Vladimír Vondruš 11 years ago
parent
commit
cbf3e427a1
  1. 7
      src/Magnum/Implementation/driverSpecific.cpp
  2. 1
      src/Magnum/Platform/Sdl2Application.cpp
  3. 1
      src/Magnum/Platform/WindowlessGlxApplication.cpp

7
src/Magnum/Implementation/driverSpecific.cpp

@ -34,7 +34,12 @@ namespace Magnum {
#ifndef CORRADE_NO_ASSERT
namespace {
std::vector<std::string> KnownWorkarounds{};
std::vector<std::string> KnownWorkarounds{
/* Creating core context with specific version on AMD and NV
proprietary drivers causes the context to be forced to given
version instead of selecting latest available version */
"amd-nv-no-forward-compatible-core-context"
};
}
#endif

1
src/Magnum/Platform/Sdl2Application.cpp

@ -189,6 +189,7 @@ bool Sdl2Application::tryCreateContext(const Configuration& configuration) {
#ifndef CORRADE_TARGET_APPLE
/* Sorry about the UGLY code, HOPEFULLY THERE WON'T BE MORE WORKAROUNDS */
|| (vendorString = reinterpret_cast<const char*>(glGetString(GL_VENDOR)),
!_context->isDriverWorkaroundDisabled("amd-nv-no-forward-compatible-core-context") &&
(std::strncmp(vendorString, nvidiaVendorString, sizeof(nvidiaVendorString)) == 0 ||
std::strncmp(vendorString, amdVendorString, sizeof(amdVendorString)) == 0))
#endif

1
src/Magnum/Platform/WindowlessGlxApplication.cpp

@ -124,6 +124,7 @@ bool WindowlessGlxApplication::tryCreateContext(const Configuration&) {
and HOPEFULLY THERE WON'T BE MORE WORKAROUNDS */
|| (glXMakeContextCurrent(_display, _pbuffer, _pbuffer, _glContext) &&
(vendorString = reinterpret_cast<const char*>(glGetString(GL_VENDOR)),
!_context->isDriverWorkaroundDisabled("amd-nv-no-forward-compatible-core-context") &&
(std::strncmp(vendorString, nvidiaVendorString, sizeof(nvidiaVendorString)) == 0 ||
std::strncmp(vendorString, amdVendorString, sizeof(amdVendorString)) == 0)))
#endif

Loading…
Cancel
Save