From 8781220335a1f7b8b60122df13fedba23bef9b35 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 8 Apr 2014 01:21:55 +0300 Subject: Add support for OpenGL extension GL_EXT_debug_marker. --- src/render/mgl.cpp | 3 +++ src/render/mgl.h | 8 ++++++++ src/render/opengldebug.h | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 src/render/opengldebug.h (limited to 'src/render') diff --git a/src/render/mgl.cpp b/src/render/mgl.cpp index ff51c659d..bf8483a67 100644 --- a/src/render/mgl.cpp +++ b/src/render/mgl.cpp @@ -45,6 +45,9 @@ defName(glDebugMessageCallback); defName(glFrameTerminator); defName(glLabelObject); defName(glGetObjectLabel); +defName(glInsertEventMarker); +defName(glPushGroupMarker); +defName(glPopGroupMarker); #ifdef WIN32 defName(wglGetExtensionsString); diff --git a/src/render/mgl.h b/src/render/mgl.h index 8fc98f8fe..b612c5e03 100644 --- a/src/render/mgl.h +++ b/src/render/mgl.h @@ -113,6 +113,11 @@ typedef void (APIENTRY *glLabelObject_t) (GLenum type, GLuint object, GLsizei length, const GLchar *label); typedef void (APIENTRY *glGetObjectLabel_t) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (APIENTRY *glInsertEventMarker_t) + (GLsizei length, const char *marker); +typedef void (APIENTRY *glPushGroupMarker_t) + (GLsizei length, const char *marker); +typedef void (APIENTRY *glPopGroupMarker_t) (void); // callback typedef void (APIENTRY *GLDEBUGPROC_t) (GLenum source, GLenum type, GLuint id, @@ -140,6 +145,9 @@ defNameE(glDebugMessageCallback); defNameE(glFrameTerminator); defNameE(glLabelObject); defNameE(glGetObjectLabel); +defNameE(glInsertEventMarker); +defNameE(glPushGroupMarker); +defNameE(glPopGroupMarker); #ifdef WIN32 typedef const char* (APIENTRY * wglGetExtensionsString_t) (HDC hdc); diff --git a/src/render/opengldebug.h b/src/render/opengldebug.h new file mode 100644 index 000000000..82b151cc8 --- /dev/null +++ b/src/render/opengldebug.h @@ -0,0 +1,36 @@ +/* + * The ManaPlus Client + * Copyright (C) 2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef RENDER_OPENGLDEBUG_H +#define RENDER_OPENGLDEBUG_H + +#include "render/mgl.h" + +#if defined(DEBUG_OPENGL) && defined(USE_OPENGL) +#define GLDEBUG_START(text) if (mglPushGroupMarker) \ + mglPushGroupMarker(sizeof(text), text); +#define GLDEBUG_END() if (mglPopGroupMarker) \ + mglPopGroupMarker(); +#else +#define GLDEBUG_START(text) +#define GLDEBUG_END() +#endif + +#endif // RENDER_OPENGLDEBUG_H -- cgit v1.2.3-70-g09d2