Add debug markers and labels
This commit is contained in:
@@ -98,6 +98,26 @@ extern PFNGLOBJECTPTRLABELPROC ObjectPtrLabel;
|
||||
extern PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel;
|
||||
void debug_callback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam);
|
||||
|
||||
// GL_EXT_debug_marker
|
||||
typedef void (* PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
|
||||
typedef void (* PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
|
||||
typedef void (* PFNGLPOPGROUPMARKEREXTPROC) (void);
|
||||
extern PFNGLINSERTEVENTMARKEREXTPROC InsertEventMarkerEXT;
|
||||
extern PFNGLPUSHGROUPMARKEREXTPROC PushGroupMarkerEXT;
|
||||
extern PFNGLPOPGROUPMARKEREXTPROC PopGroupMarkerEXT;
|
||||
|
||||
// GL_EXT_debug_label
|
||||
#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
|
||||
#define GL_PROGRAM_OBJECT_EXT 0x8B40
|
||||
#define GL_SHADER_OBJECT_EXT 0x8B48
|
||||
#define GL_BUFFER_OBJECT_EXT 0x9151
|
||||
#define GL_QUERY_OBJECT_EXT 0x9153
|
||||
#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
|
||||
typedef void (* PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
|
||||
typedef void (* PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
|
||||
extern PFNGLLABELOBJECTEXTPROC LabelObjectEXT;
|
||||
extern PFNGLGETOBJECTLABELEXTPROC GetObjectLabelEXT;
|
||||
|
||||
#define GL_VERTEX_ARRAY_BINDING 0x85B5
|
||||
typedef void (* PFNGLBINDVERTEXARRAYPROC) (GLuint array);
|
||||
typedef void (* PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays);
|
||||
|
||||
@@ -85,12 +85,25 @@ void GLFWView::initialize(mbgl::Map *map_) {
|
||||
gl::GetObjectLabel = (gl::PFNGLGETOBJECTLABELPROC)glfwGetProcAddress("glGetObjectLabel");
|
||||
gl::ObjectPtrLabel = (gl::PFNGLOBJECTPTRLABELPROC)glfwGetProcAddress("glObjectPtrLabel");
|
||||
gl::GetObjectPtrLabel = (gl::PFNGLGETOBJECTPTRLABELPROC)glfwGetProcAddress("glGetObjectPtrLabel");
|
||||
} else if (extensions.find("GL_ARB_debug_output") != std::string::npos) {
|
||||
gl::DebugMessageControl = (gl::PFNGLDEBUGMESSAGECONTROLPROC)glfwGetProcAddress("glDebugMessageControlARB");
|
||||
gl::DebugMessageInsert = (gl::PFNGLDEBUGMESSAGEINSERTPROC)glfwGetProcAddress("glDebugMessageInsertARB");
|
||||
gl::DebugMessageCallback = (gl::PFNGLDEBUGMESSAGECALLBACKPROC)glfwGetProcAddress("glDebugMessageCallbackARB");
|
||||
gl::GetDebugMessageLog = (gl::PFNGLGETDEBUGMESSAGELOGPROC)glfwGetProcAddress("glGetDebugMessageLogARB");
|
||||
gl::GetPointerv = (gl::PFNGLGETPOINTERVPROC)glfwGetProcAddress("glGetPointerv");
|
||||
} else {
|
||||
if (extensions.find("GL_ARB_debug_output") != std::string::npos) {
|
||||
gl::DebugMessageControl = (gl::PFNGLDEBUGMESSAGECONTROLPROC)glfwGetProcAddress("glDebugMessageControlARB");
|
||||
gl::DebugMessageInsert = (gl::PFNGLDEBUGMESSAGEINSERTPROC)glfwGetProcAddress("glDebugMessageInsertARB");
|
||||
gl::DebugMessageCallback = (gl::PFNGLDEBUGMESSAGECALLBACKPROC)glfwGetProcAddress("glDebugMessageCallbackARB");
|
||||
gl::GetDebugMessageLog = (gl::PFNGLGETDEBUGMESSAGELOGPROC)glfwGetProcAddress("glGetDebugMessageLogARB");
|
||||
gl::GetPointerv = (gl::PFNGLGETPOINTERVPROC)glfwGetProcAddress("glGetPointerv");
|
||||
}
|
||||
|
||||
if (extensions.find("GL_EXT_debug_marker") != std::string::npos) {
|
||||
gl::InsertEventMarkerEXT = (gl::PFNGLINSERTEVENTMARKEREXTPROC)glfwGetProcAddress("glInsertEventMarkerEXT");
|
||||
gl::PushGroupMarkerEXT = (gl::PFNGLPUSHGROUPMARKEREXTPROC)glfwGetProcAddress("glPushGroupMarkerEXT");
|
||||
gl::PopGroupMarkerEXT = (gl::PFNGLPOPGROUPMARKEREXTPROC)glfwGetProcAddress("glPopGroupMarkerEXT");
|
||||
}
|
||||
|
||||
if (extensions.find("GL_EXT_debug_label") != std::string::npos) {
|
||||
gl::LabelObjectEXT = (gl::PFNGLLABELOBJECTEXTPROC)glfwGetProcAddress("glLabelObjectEXT");
|
||||
gl::GetObjectLabelEXT = (gl::PFNGLGETOBJECTLABELEXTPROC)glfwGetProcAddress("glGetObjectLabelEXT");
|
||||
}
|
||||
}
|
||||
|
||||
if (extensions.find("GL_ARB_vertex_array_object") != std::string::npos) {
|
||||
|
||||
@@ -7,17 +7,17 @@
|
||||
namespace mbgl {
|
||||
namespace gl {
|
||||
|
||||
PFNGLDEBUGMESSAGECONTROLPROC DebugMessageControl;
|
||||
PFNGLDEBUGMESSAGEINSERTPROC DebugMessageInsert;
|
||||
PFNGLDEBUGMESSAGECALLBACKPROC DebugMessageCallback;
|
||||
PFNGLGETDEBUGMESSAGELOGPROC GetDebugMessageLog;
|
||||
PFNGLGETPOINTERVPROC GetPointerv;
|
||||
PFNGLPUSHDEBUGGROUPPROC PushDebugGroup;
|
||||
PFNGLPOPDEBUGGROUPPROC PopDebugGroup;
|
||||
PFNGLOBJECTLABELPROC ObjectLabel;
|
||||
PFNGLGETOBJECTLABELPROC GetObjectLabel;
|
||||
PFNGLOBJECTPTRLABELPROC ObjectPtrLabel;
|
||||
PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel;
|
||||
PFNGLDEBUGMESSAGECONTROLPROC DebugMessageControl = nullptr;
|
||||
PFNGLDEBUGMESSAGEINSERTPROC DebugMessageInsert = nullptr;
|
||||
PFNGLDEBUGMESSAGECALLBACKPROC DebugMessageCallback = nullptr;
|
||||
PFNGLGETDEBUGMESSAGELOGPROC GetDebugMessageLog = nullptr;
|
||||
PFNGLGETPOINTERVPROC GetPointerv = nullptr;
|
||||
PFNGLPUSHDEBUGGROUPPROC PushDebugGroup = nullptr;
|
||||
PFNGLPOPDEBUGGROUPPROC PopDebugGroup = nullptr;
|
||||
PFNGLOBJECTLABELPROC ObjectLabel = nullptr;
|
||||
PFNGLGETOBJECTLABELPROC GetObjectLabel = nullptr;
|
||||
PFNGLOBJECTPTRLABELPROC ObjectPtrLabel = nullptr;
|
||||
PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel = nullptr;
|
||||
|
||||
void debug_callback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei, const GLchar *message, const void *) {
|
||||
std::string strSource;
|
||||
@@ -58,6 +58,13 @@ void debug_callback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsi
|
||||
mbgl::Log::Record(evtSeverity, mbgl::Event::OpenGL, "GL_%s GL_%s %u GL_%s - %s", strSource.c_str(), strType.c_str(), id, strSeverity.c_str(), message);
|
||||
}
|
||||
|
||||
PFNGLINSERTEVENTMARKEREXTPROC InsertEventMarkerEXT = nullptr;
|
||||
PFNGLPUSHGROUPMARKEREXTPROC PushGroupMarkerEXT = nullptr;
|
||||
PFNGLPOPGROUPMARKEREXTPROC PopGroupMarkerEXT = nullptr;
|
||||
|
||||
PFNGLLABELOBJECTEXTPROC LabelObjectEXT = nullptr;
|
||||
PFNGLGETOBJECTLABELEXTPROC GetObjectLabelEXT = nullptr;
|
||||
|
||||
PFNGLBINDVERTEXARRAYPROC BindVertexArray = nullptr;
|
||||
PFNGLDELETEVERTEXARRAYSPROC DeleteVertexArrays = nullptr;
|
||||
PFNGLGENVERTEXARRAYSPROC GenVertexArrays = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user