summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mbgl/platform/gl.hpp20
-rw-r--r--platform/default/glfw_view.cpp25
-rw-r--r--src/platform/gl.cpp29
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;