Only use opengl debug groups if the LOVE_GRAPHICS_DEBUG environment variable is set to 1.

--HG--
branch : minor
This commit is contained in:
Alex Szpakowski
2017-02-12 17:58:28 -04:00
parent df540cedea
commit 97789b18c0
6 changed files with 47 additions and 32 deletions
+15
View File
@@ -28,6 +28,7 @@
// C++
#include <algorithm>
#include <stdlib.h>
namespace love
{
@@ -35,6 +36,8 @@ namespace graphics
{
static bool gammaCorrect = false;
static bool debugMode = false;
static bool debugModeQueried = false;
void setGammaCorrect(bool gammacorrect)
{
@@ -80,6 +83,18 @@ Colorf unGammaCorrectColor(const Colorf &c)
return r;
}
bool isDebugEnabled()
{
if (!debugModeQueried)
{
const char *debugenv = getenv("LOVE_GRAPHICS_DEBUG");
debugMode = debugenv != nullptr && debugenv[0] != '0';
debugModeQueried = true;
}
return debugMode;
}
love::Type Graphics::type("graphics", &Module::type);
Shader::ShaderSource Graphics::defaultShaderCode[Shader::LANGUAGE_MAX_ENUM][2];
+2
View File
@@ -88,6 +88,8 @@ void unGammaCorrectColor(Colorf &c);
Colorf gammaCorrectColor(const Colorf &c);
Colorf unGammaCorrectColor(const Colorf &c);
bool isDebugEnabled();
class Graphics : public Module
{
public:
+1 -11
View File
@@ -272,17 +272,7 @@ bool Graphics::setMode(int width, int height, int pixelwidth, int pixelheight, b
else
setGammaCorrect(false);
bool enabledebug = false;
if (GLAD_VERSION_3_0)
{
// Enable OpenGL's debug output if a debug context has been created.
GLint flags = 0;
glGetIntegerv(GL_CONTEXT_FLAGS, &flags);
enabledebug = (flags & GL_CONTEXT_FLAG_DEBUG_BIT) != 0;
}
setDebug(enabledebug);
setDebug(isDebugEnabled());
if (streamBufferState.vb[0] == nullptr)
{
+26
View File
@@ -64,6 +64,32 @@ static void *LOVEGetProcAddress(const char *name)
return SDL_GL_GetProcAddress(name);
}
OpenGL::TempDebugGroup::TempDebugGroup(const char *name)
{
if (isDebugEnabled())
{
if (GLAD_VERSION_4_3 || (GLAD_KHR_debug && !GLAD_ES_VERSION_2_0))
glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, 0, (const GLchar *) name);
else if (GLAD_ES_VERSION_2_0 && GLAD_KHR_debug)
glPushDebugGroupKHR(GL_DEBUG_SOURCE_APPLICATION, 0, 0, (const GLchar *) name);
else if (GLAD_EXT_debug_marker)
glPushGroupMarkerEXT(0, (const GLchar *) name);
}
}
OpenGL::TempDebugGroup::~TempDebugGroup()
{
if (isDebugEnabled())
{
if (GLAD_VERSION_4_3 || (GLAD_KHR_debug && !GLAD_ES_VERSION_2_0))
glPopDebugGroup();
else if (GLAD_ES_VERSION_2_0 && GLAD_KHR_debug)
glPopDebugGroupKHR();
else if (GLAD_EXT_debug_marker)
glPopGroupMarkerEXT();
}
}
OpenGL::OpenGL()
: stats()
, contextInitialized(false)
+2 -19
View File
@@ -101,25 +101,8 @@ public:
{
public:
TempDebugGroup(const char *name)
{
if (GLAD_VERSION_4_3 || (GLAD_KHR_debug && !GLAD_ES_VERSION_2_0))
glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, 0, (const GLchar *) name);
else if (GLAD_ES_VERSION_2_0 && GLAD_KHR_debug)
glPushDebugGroupKHR(GL_DEBUG_SOURCE_APPLICATION, 0, 0, (const GLchar *) name);
else if (GLAD_EXT_debug_marker)
glPushGroupMarkerEXT(0, (const GLchar *) name);
}
~TempDebugGroup()
{
if (GLAD_VERSION_4_3 || (GLAD_KHR_debug && !GLAD_ES_VERSION_2_0))
glPopDebugGroup();
else if (GLAD_ES_VERSION_2_0 && GLAD_KHR_debug)
glPopDebugGroupKHR();
else if (GLAD_EXT_debug_marker)
glPopGroupMarkerEXT();
}
TempDebugGroup(const char *name);
~TempDebugGroup();
};
struct Stats