diff options
author | Leith Bade <leith@mapbox.com> | 2014-12-02 03:24:42 +1100 |
---|---|---|
committer | Leith Bade <leith@mapbox.com> | 2014-12-02 03:24:42 +1100 |
commit | 2800f361424ee84af283fbe7bb73b5afbe264c6e (patch) | |
tree | 8abfde9c08cdf7ed959378101b76c7ae3ec3b1e7 | |
parent | 66349e33ab3bde1a7fe901e84c70c04884476f78 (diff) | |
download | qtlocation-mapboxgl-2800f361424ee84af283fbe7bb73b5afbe264c6e.tar.gz |
Add debug markers and labels
-rw-r--r-- | include/mbgl/platform/gl.hpp | 20 | ||||
-rw-r--r-- | platform/default/glfw_view.cpp | 25 | ||||
-rw-r--r-- | src/platform/gl.cpp | 29 |
3 files changed, 57 insertions, 17 deletions
diff --git a/include/mbgl/platform/gl.hpp b/include/mbgl/platform/gl.hpp index 20e9ae2d63..7dbe667788 100644 --- a/include/mbgl/platform/gl.hpp +++ b/include/mbgl/platform/gl.hpp @@ -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); diff --git a/platform/default/glfw_view.cpp b/platform/default/glfw_view.cpp index 802fc10e21..ed37653bb0 100644 --- a/platform/default/glfw_view.cpp +++ b/platform/default/glfw_view.cpp @@ -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) { diff --git a/src/platform/gl.cpp b/src/platform/gl.cpp index 7fb4debd7a..c0c3bb1c74 100644 --- a/src/platform/gl.cpp +++ b/src/platform/gl.cpp @@ -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; |