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