Browse Source

Platform: take Flag::GpuValidation into account in all apps.

Right now only the command-line variant of it was checked. Since on
some platforms this requires the app to explicitly request a debug
context, the app needs to handle the case when it's passed via a
Configuration as well.
euler-xxx
Vladimír Vondruš 5 years ago
parent
commit
458c2c7757
  1. 5
      src/Magnum/Platform/GlfwApplication.cpp
  2. 5
      src/Magnum/Platform/Sdl2Application.cpp
  3. 19
      src/Magnum/Platform/Test/GlfwApplicationTest.cpp
  4. 19
      src/Magnum/Platform/Test/Sdl2ApplicationTest.cpp
  5. 13
      src/Magnum/Platform/Test/WindowlessEglApplicationTest.cpp
  6. 11
      src/Magnum/Platform/Test/WindowlessGlxApplicationTest.cpp
  7. 10
      src/Magnum/Platform/Test/WindowlessWglApplicationTest.cpp
  8. 10
      src/Magnum/Platform/Test/WindowlessWindowsEglApplicationTest.cpp
  9. 5
      src/Magnum/Platform/WindowlessEglApplication.cpp
  10. 5
      src/Magnum/Platform/WindowlessGlxApplication.cpp
  11. 5
      src/Magnum/Platform/WindowlessWglApplication.cpp
  12. 5
      src/Magnum/Platform/WindowlessWindowsEglApplication.cpp

5
src/Magnum/Platform/GlfwApplication.cpp

@ -430,9 +430,10 @@ bool GlfwApplication::tryCreate(const Configuration& configuration, const GLConf
glfwWindowHint(GLFW_SAMPLES, glConfiguration.sampleCount());
glfwWindowHint(GLFW_SRGB_CAPABLE, glConfiguration.isSrgbCapable());
/* Request debug context if --magnum-gpu-validation is enabled */
/* Request debug context if GpuValidation is enabled either via the
configuration or via command-line */
GLConfiguration::Flags glFlags = glConfiguration.flags();
if(_context->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation)
if((glFlags & GLConfiguration::Flag::GpuValidation) || (_context->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation))
glFlags |= GLConfiguration::Flag::Debug;
#ifdef GLFW_CONTEXT_NO_ERROR

5
src/Magnum/Platform/Sdl2Application.cpp

@ -465,9 +465,10 @@ bool Sdl2Application::tryCreate(const Configuration& configuration, const GLConf
_dpiScaling = dpiScaling(configuration);
const Vector2i scaledWindowSize = configuration.size()*_dpiScaling;
/* Request debug context if --magnum-gpu-validation is enabled */
/* Request debug context if GpuValidation is enabled either via the
configuration or via command-line */
GLConfiguration::Flags glFlags = glConfiguration.flags();
if(_context->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation)
if((glFlags & GLConfiguration::Flag::GpuValidation) || (_context->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation))
glFlags |= GLConfiguration::Flag::Debug;
/* Set context version, if user-specified */

19
src/Magnum/Platform/Test/GlfwApplicationTest.cpp

@ -110,6 +110,7 @@ GlfwApplicationTest::GlfwApplicationTest(const Arguments& arguments): Platform::
.addBooleanOption("always-on-top").setHelp("always-on-top", "always on top")
#ifdef MAGNUM_TARGET_GL
.addBooleanOption("quiet").setHelp("quiet", "like --magnum-log quiet, but specified via a Context::Configuration instead")
.addBooleanOption("gpu-validation").setHelp("gpu-validation", "like --magnum-gpu-validation, but specified via a Context::Configuration instead")
#endif
.parse(arguments.argc, arguments.argv);
@ -127,13 +128,19 @@ GlfwApplicationTest::GlfwApplicationTest(const Arguments& arguments): Platform::
if(args.isSet("always-on-top"))
conf.addWindowFlags(Configuration::WindowFlag::AlwaysOnTop);
#ifdef MAGNUM_TARGET_GL
if(args.isSet("quiet")) {
create(conf, GLConfiguration{}.addFlags(GLConfiguration::Flag::QuietLog));
} else
GLConfiguration glConf;
if(args.isSet("quiet"))
glConf.addFlags(GLConfiguration::Flag::QuietLog);
if(args.isSet("gpu-validation"))
glConf.addFlags(GLConfiguration::Flag::GpuValidation);
create(conf, glConf);
#else
create(conf);
#endif
#ifdef MAGNUM_TARGET_GL
Debug{} << "GL context flags:" << GL::Context::current().flags();
#endif
{
create(conf);
}
/* For testing resize events */
Debug{} << "window size" << windowSize()

19
src/Magnum/Platform/Test/Sdl2ApplicationTest.cpp

@ -167,6 +167,7 @@ Sdl2ApplicationTest::Sdl2ApplicationTest(const Arguments& arguments): Platform::
#endif
#ifdef MAGNUM_TARGET_GL
.addBooleanOption("quiet").setHelp("quiet", "like --magnum-log quiet, but specified via a Context::Configuration instead")
.addBooleanOption("gpu-validation").setHelp("gpu-validation", "like --magnum-gpu-validation, but specified via a Context::Configuration instead")
#endif
.parse(arguments.argc, arguments.argv);
@ -188,13 +189,19 @@ Sdl2ApplicationTest::Sdl2ApplicationTest(const Arguments& arguments): Platform::
#endif
#endif
#ifdef MAGNUM_TARGET_GL
if(args.isSet("quiet")) {
create(conf, GLConfiguration{}.addFlags(GLConfiguration::Flag::QuietLog));
} else
GLConfiguration glConf;
if(args.isSet("quiet"))
glConf.addFlags(GLConfiguration::Flag::QuietLog);
if(args.isSet("gpu-validation"))
glConf.addFlags(GLConfiguration::Flag::GpuValidation);
create(conf, glConf);
#else
create(conf);
#endif
#if defined(MAGNUM_TARGET_GL) && !defined(MAGNUM_TARGET_WEBGL)
Debug{} << "GL context flags:" << GL::Context::current().flags();
#endif
{
create(conf);
}
/* For testing resize events */
Debug{} << "window size" << windowSize()

13
src/Magnum/Platform/Test/WindowlessEglApplicationTest.cpp

@ -38,12 +38,19 @@ WindowlessEglApplicationTest::WindowlessEglApplicationTest(const Arguments& argu
Utility::Arguments args;
args.addSkippedPrefix("magnum", "engine-specific options")
.addBooleanOption("quiet").setHelp("quiet", "like --magnum-log quiet, but specified via a Context::Configuration instead")
.addBooleanOption("gpu-validation").setHelp("gpu-validation", "like --magnum-gpu-validation, but specified via a Context::Configuration instead")
.parse(arguments.argc, arguments.argv);
Configuration conf;
if(args.isSet("quiet"))
createContext(Configuration{}.addFlags(Configuration::Flag::QuietLog));
else
createContext();
conf.addFlags(Configuration::Flag::QuietLog);
if(args.isSet("gpu-validation"))
conf.addFlags(Configuration::Flag::GpuValidation);
createContext(conf);
#ifndef MAGNUM_TARGET_WEBGL
Debug{} << "GL context flags:" << GL::Context::current().flags();
#endif
}
}}}}

11
src/Magnum/Platform/Test/WindowlessGlxApplicationTest.cpp

@ -38,12 +38,17 @@ WindowlessGlxApplicationTest::WindowlessGlxApplicationTest(const Arguments& argu
Utility::Arguments args;
args.addSkippedPrefix("magnum", "engine-specific options")
.addBooleanOption("quiet").setHelp("quiet", "like --magnum-log quiet, but specified via a Context::Configuration instead")
.addBooleanOption("gpu-validation").setHelp("gpu-validation", "like --magnum-gpu-validation, but specified via a Context::Configuration instead")
.parse(arguments.argc, arguments.argv);
Configuration conf;
if(args.isSet("quiet"))
createContext(Configuration{}.addFlags(Configuration::Flag::QuietLog));
else
createContext();
conf.addFlags(Configuration::Flag::QuietLog);
if(args.isSet("gpu-validation"))
conf.addFlags(Configuration::Flag::GpuValidation);
createContext(conf);
Debug{} << "GL context flags:" << GL::Context::current().flags();
}
}}}}

10
src/Magnum/Platform/Test/WindowlessWglApplicationTest.cpp

@ -38,12 +38,16 @@ WindowlessWglApplicationTest::WindowlessWglApplicationTest(const Arguments& argu
Utility::Arguments args;
args.addSkippedPrefix("magnum", "engine-specific options")
.addBooleanOption("quiet").setHelp("quiet", "like --magnum-log quiet, but specified via a Context::Configuration instead")
.addBooleanOption("gpu-validation").setHelp("gpu-validation", "like --magnum-gpu-validation, but specified via a Context::Configuration instead")
.parse(arguments.argc, arguments.argv);
Configuration conf;
if(args.isSet("quiet"))
createContext(Configuration{}.addFlags(Configuration::Flag::QuietLog));
else
createContext();
conf.addFlags(Configuration::Flag::QuietLog);
/* No verbose logs in this app */
if(args.isSet("gpu-validation"))
conf.addFlags(Configuration::Flag::GpuValidation);
createContext(conf);
}
}}}}

10
src/Magnum/Platform/Test/WindowlessWindowsEglApplicationTest.cpp

@ -38,12 +38,16 @@ WindowlessWindowsEglApplicationTest::WindowlessWindowsEglApplicationTest(const A
Utility::Arguments args;
args.addSkippedPrefix("magnum", "engine-specific options")
.addBooleanOption("quiet").setHelp("quiet", "like --magnum-log quiet, but specified via a Context::Configuration instead")
.addBooleanOption("gpu-validation").setHelp("gpu-validation", "like --magnum-gpu-validation, but specified via a Context::Configuration instead")
.parse(arguments.argc, arguments.argv);
Configuration conf;
if(args.isSet("quiet"))
createContext(Configuration{}.addFlags(Configuration::Flag::QuietLog));
else
createContext();
conf.addFlags(Configuration::Flag::QuietLog);
/* No verbose logs in this app */
if(args.isSet("gpu-validation"))
conf.addFlags(Configuration::Flag::GpuValidation);
createContext(conf);
}
}}}}

5
src/Magnum/Platform/WindowlessEglApplication.cpp

@ -302,9 +302,10 @@ WindowlessEglContext::WindowlessEglContext(const Configuration& configuration, G
}
#ifndef MAGNUM_TARGET_WEBGL
/* Request debug context if --magnum-gpu-validation is enabled */
/* Request debug context if GpuValidation is enabled either via the
configuration or via command-line */
Configuration::Flags flags = configuration.flags();
if(magnumContext && magnumContext->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation)
if((flags & Configuration::Flag::GpuValidation) || (magnumContext && magnumContext->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation))
flags |= Configuration::Flag::Debug;
#endif

5
src/Magnum/Platform/WindowlessGlxApplication.cpp

@ -109,9 +109,10 @@ WindowlessGlxContext::WindowlessGlxContext(const WindowlessGlxContext::Configura
/* Get pointer to proper context creation function */
const PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB = reinterpret_cast<PFNGLXCREATECONTEXTATTRIBSARBPROC>(glXGetProcAddress(reinterpret_cast<const GLubyte*>("glXCreateContextAttribsARB")));
/* Request debug context if --magnum-gpu-validation is enabled */
/* Request debug context if GpuValidation is enabled either via the
configuration or via command-line */
Configuration::Flags flags = configuration.flags();
if(magnumContext && magnumContext->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation)
if((flags & Configuration::Flag::GpuValidation) || (magnumContext && magnumContext->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation))
flags |= Configuration::Flag::Debug;
/* Optimistically choose core context first */

5
src/Magnum/Platform/WindowlessWglApplication.cpp

@ -122,9 +122,10 @@ WindowlessWglContext::WindowlessWglContext(const Configuration& configuration, G
typedef HGLRC(WINAPI*PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC, HGLRC, const int*);
const PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB = reinterpret_cast<PFNWGLCREATECONTEXTATTRIBSARBPROC>( wglGetProcAddress(reinterpret_cast<LPCSTR>("wglCreateContextAttribsARB")));
/* Request debug context if --magnum-gpu-validation is enabled */
/* Request debug context if GpuValidation is enabled either via the
configuration or via command-line */
Configuration::Flags flags = configuration.flags();
if(magnumContext && magnumContext->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation)
if((flags & Configuration::Flag::GpuValidation) || (magnumContext && magnumContext->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation))
flags |= Configuration::Flag::Debug;
/* Optimistically choose core context first */

5
src/Magnum/Platform/WindowlessWindowsEglApplication.cpp

@ -113,9 +113,10 @@ WindowlessWindowsEglContext::WindowlessWindowsEglContext(const Configuration& co
return;
}
/* Request debug context if --magnum-gpu-validation is enabled */
/* Request debug context if GpuValidation is enabled either via the
configuration or via command-line */
Configuration::Flags flags = configuration.flags();
if(magnumContext && magnumContext->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation)
if((flags & Configuration::Flag::GpuValidation) || (magnumContext && magnumContext->configurationFlags() & GL::Context::Configuration::Flag::GpuValidation))
flags |= Configuration::Flag::Debug;
const EGLint attributes[] = {

Loading…
Cancel
Save