1313#include < algorithm>
1414#include < tuple>
1515
16+ namespace
17+ {
18+ const char *GLSeverityToString (GLenum severity)
19+ {
20+ switch (severity)
21+ {
22+ case GL_DEBUG_SEVERITY_HIGH:
23+ return " HIGH" ;
24+ case GL_DEBUG_SEVERITY_MEDIUM:
25+ return " MEDIUM" ;
26+ case GL_DEBUG_SEVERITY_LOW:
27+ return " LOW" ;
28+ case GL_DEBUG_SEVERITY_NOTIFICATION:
29+ default :
30+ return " NOTIFICATION" ;
31+ }
32+ }
33+
34+ const char *EGLMessageTypeToString (egl::MessageType messageType)
35+ {
36+ switch (messageType)
37+ {
38+ case egl::MessageType::Critical:
39+ return " CRITICAL" ;
40+ case egl::MessageType::Error:
41+ return " ERROR" ;
42+ case egl::MessageType::Warn:
43+ return " WARNING" ;
44+ case egl::MessageType::Info:
45+ default :
46+ return " INFO" ;
47+ }
48+ }
49+
50+ const char *GLMessageTypeToString (GLenum type)
51+ {
52+ switch (type)
53+ {
54+ case GL_DEBUG_TYPE_ERROR:
55+ return " error" ;
56+ case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
57+ return " deprecated behavior" ;
58+ case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
59+ return " undefined behavior" ;
60+ case GL_DEBUG_TYPE_PORTABILITY:
61+ return " portability" ;
62+ case GL_DEBUG_TYPE_PERFORMANCE:
63+ return " performance" ;
64+ case GL_DEBUG_TYPE_MARKER:
65+ return " marker" ;
66+ case GL_DEBUG_TYPE_PUSH_GROUP:
67+ return " start of group" ;
68+ case GL_DEBUG_TYPE_POP_GROUP:
69+ return " end of group" ;
70+ case GL_DEBUG_TYPE_OTHER:
71+ default :
72+ return " other message" ;
73+ }
74+ }
75+ } // namespace
76+
1677namespace gl
1778{
1879
@@ -87,18 +148,29 @@ void Debug::insertMessage(GLenum source,
87148 GLenum type,
88149 GLuint id,
89150 GLenum severity,
90- const std::string &message) const
151+ const std::string &message,
152+ gl::LogSeverity logSeverity) const
91153{
92154 std::string messageCopy (message);
93- insertMessage (source, type, id, severity, std::move (messageCopy));
155+ insertMessage (source, type, id, severity, std::move (messageCopy), logSeverity );
94156}
95157
96158void Debug::insertMessage (GLenum source,
97159 GLenum type,
98160 GLuint id,
99161 GLenum severity,
100- std::string &&message) const
162+ std::string &&message,
163+ gl::LogSeverity logSeverity) const
101164{
165+ {
166+ // output all messages to the debug log
167+ const char *messageTypeString = GLMessageTypeToString (type);
168+ const char *severityString = GLSeverityToString (severity);
169+ std::ostringstream messageStream;
170+ messageStream << " GL " << messageTypeString << " : " << severityString << " : " << message;
171+ gl::Trace (logSeverity, messageStream.str ().c_str ());
172+ }
173+
102174 if (!isMessageEnabled (source, type, id, severity))
103175 {
104176 return ;
@@ -223,7 +295,7 @@ void Debug::setMessageControl(GLenum source,
223295void Debug::pushGroup (GLenum source, GLuint id, std::string &&message)
224296{
225297 insertMessage (source, GL_DEBUG_TYPE_PUSH_GROUP, id, GL_DEBUG_SEVERITY_NOTIFICATION,
226- std::string (message));
298+ std::string (message), gl::LOG_INFO );
227299
228300 Group g;
229301 g.source = source;
@@ -241,7 +313,7 @@ void Debug::popGroup()
241313 mGroups .pop_back ();
242314
243315 insertMessage (g.source , GL_DEBUG_TYPE_POP_GROUP, g.id , GL_DEBUG_SEVERITY_NOTIFICATION,
244- g.message );
316+ g.message , gl::LOG_INFO );
245317}
246318
247319size_t Debug::getGroupStackDepth () const
@@ -365,6 +437,14 @@ void Debug::insertMessage(EGLenum error,
365437 EGLLabelKHR objectLabel,
366438 const std::string &message) const
367439{
440+ {
441+ // output all messages to the debug log
442+ const char *messageTypeString = EGLMessageTypeToString (messageType);
443+ std::ostringstream messageStream;
444+ messageStream << " EGL " << messageTypeString << " : " << command << " : " << message;
445+ gl::Trace (gl::LOG_INFO, messageStream.str ().c_str ());
446+ }
447+
368448 // TODO(geofflang): Lock before checking the callback. http://anglebug.com/2464
369449 if (mCallback && isMessageTypeEnabled (messageType))
370450 {
0 commit comments