1 #include <mbgl/gl/debugging_extension.hpp>
2 #include <mbgl/util/logging.hpp>
3
4 namespace mbgl {
5 namespace gl {
6 namespace extension {
7
DebugCallback(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei,const GLchar * message,const void *)8 void Debugging::DebugCallback(GLenum source,
9 GLenum type,
10 GLuint id,
11 GLenum severity,
12 GLsizei /* length */,
13 const GLchar* message,
14 const void* /* userParam */) {
15 std::string strSource;
16 switch (source) {
17 case GL_DEBUG_SOURCE_API: strSource = "DEBUG_SOURCE_API"; break;
18 case GL_DEBUG_SOURCE_WINDOW_SYSTEM: strSource = "DEBUG_SOURCE_WINDOW_SYSTEM"; break;
19 case GL_DEBUG_SOURCE_SHADER_COMPILER: strSource = "DEBUG_SOURCE_SHADER_COMPILER"; break;
20 case GL_DEBUG_SOURCE_THIRD_PARTY: strSource = "DEBUG_SOURCE_THIRD_PARTY"; break;
21 case GL_DEBUG_SOURCE_APPLICATION: strSource = "DEBUG_SOURCE_APPLICATION"; break;
22 case GL_DEBUG_SOURCE_OTHER: strSource = "DEBUG_SOURCE_OTHER"; break;
23 default: strSource = "(unknown)"; break;
24 }
25
26 std::string strType;
27 switch (type) {
28 case GL_DEBUG_TYPE_ERROR: strType = "DEBUG_TYPE_ERROR"; break;
29 case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: strType = "DEBUG_TYPE_DEPRECATED_BEHAVIOR"; break;
30 case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: strType = "DEBUG_TYPE_UNDEFINED_BEHAVIOR"; break;
31 case GL_DEBUG_TYPE_PERFORMANCE: strType = "DEBUG_TYPE_PERFORMANCE"; break;
32 case GL_DEBUG_TYPE_PORTABILITY: strType = "DEBUG_TYPE_PORTABILITY"; break;
33 case GL_DEBUG_TYPE_OTHER: strType = "DEBUG_TYPE_OTHER"; break;
34 case GL_DEBUG_TYPE_MARKER: strType = "DEBUG_TYPE_MARKER"; break;
35 case GL_DEBUG_TYPE_PUSH_GROUP: strType = "DEBUG_TYPE_OTHER"; break;
36 case GL_DEBUG_TYPE_POP_GROUP: strType = "DEBUG_TYPE_POP_GROUP"; break;
37 default: strSource = "(unknown)"; break;
38 }
39
40 std::string strSeverity;
41 mbgl::EventSeverity evtSeverity;
42 switch (severity) {
43 case GL_DEBUG_SEVERITY_HIGH: strSeverity = "DEBUG_SEVERITY_HIGH"; evtSeverity = mbgl::EventSeverity::Error; break;
44 case GL_DEBUG_SEVERITY_MEDIUM: strSeverity = "DEBUG_SEVERITY_MEDIUM"; evtSeverity = mbgl::EventSeverity::Warning; break;
45 case GL_DEBUG_SEVERITY_LOW: strSeverity = "DEBUG_SEVERITY_LOW"; evtSeverity = mbgl::EventSeverity::Info; break;
46 case GL_DEBUG_SEVERITY_NOTIFICATION: strSeverity = "DEBUG_SEVERITY_NOTIFICATION"; evtSeverity = mbgl::EventSeverity::Debug; break;
47 default: strSource = "(unknown)"; evtSeverity = mbgl::EventSeverity::Debug; break;
48 }
49
50 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);
51 }
52
53 } // namespace extension
54 } // namespace gl
55 } // namespace mbgl
56