@@ -48,107 +48,52 @@ static void APIENTRY opengl_debug_message_callback(
4848 GLenum severity, GLsizei length,
4949 const GLchar *msg, const void *data)
5050{
51- const char *_source;
52- const char *_type;
53- const char *_severity;
51+ if (severity == GL_DEBUG_SEVERITY_NOTIFICATION) return ;
5452
55- switch (source) {
56- case GL_DEBUG_SOURCE_API:
57- _source = " API" ;
58- break ;
59-
60- case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
61- _source = " WINDOW SYSTEM" ;
62- break ;
63-
64- case GL_DEBUG_SOURCE_SHADER_COMPILER:
65- _source = " SHADER COMPILER" ;
66- break ;
67-
68- case GL_DEBUG_SOURCE_THIRD_PARTY:
69- _source = " THIRD PARTY" ;
70- break ;
71-
72- case GL_DEBUG_SOURCE_APPLICATION:
73- _source = " APPLICATION" ;
74- break ;
53+ const char *_source = " ???" ;
54+ const char *_type = " ???" ;
55+ const char *_severity = " ???" ;
7556
76- case GL_DEBUG_SOURCE_OTHER:
77- _source = " UNKNOWN" ;
78- break ;
79-
80- default :
81- _source = " UNKNOWN" ;
82- break ;
83- }
57+ switch (source) {
58+ #define PER_GL_DEBUG_SOURCE (x ) case GL_DEBUG_SOURCE_##x: _source = #x; break ;
59+ PER_GL_DEBUG_SOURCE (API)
60+ PER_GL_DEBUG_SOURCE (WINDOW_SYSTEM)
61+ PER_GL_DEBUG_SOURCE (SHADER_COMPILER)
62+ PER_GL_DEBUG_SOURCE (THIRD_PARTY)
63+ PER_GL_DEBUG_SOURCE (APPLICATION)
64+ PER_GL_DEBUG_SOURCE (OTHER)
65+ #undef PER_GL_DEBUG_SOURCE
66+ };
8467
8568 switch (type) {
86- case GL_DEBUG_TYPE_ERROR:
87- _type = " ERROR" ;
88- break ;
89-
90- case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
91- _type = " DEPRECATED BEHAVIOR" ;
92- break ;
93-
94- case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
95- _type = " UDEFINED BEHAVIOR" ;
96- break ;
97-
98- case GL_DEBUG_TYPE_PORTABILITY:
99- _type = " PORTABILITY" ;
100- break ;
101-
102- case GL_DEBUG_TYPE_PERFORMANCE:
103- _type = " PERFORMANCE" ;
104- break ;
105-
106- case GL_DEBUG_TYPE_OTHER:
107- _type = " OTHER" ;
108- break ;
109-
110- case GL_DEBUG_TYPE_MARKER:
111- _type = " MARKER" ;
112- break ;
113-
114- default :
115- _type = " UNKNOWN" ;
116- break ;
69+ #define PER_GL_DEBUG_TYPE (x ) case GL_DEBUG_TYPE_##x: _type = #x; break ;
70+ PER_GL_DEBUG_TYPE (ERROR)
71+ PER_GL_DEBUG_TYPE (UNDEFINED_BEHAVIOR)
72+ PER_GL_DEBUG_TYPE (PORTABILITY)
73+ PER_GL_DEBUG_TYPE (PERFORMANCE)
74+ PER_GL_DEBUG_TYPE (OTHER)
75+ PER_GL_DEBUG_TYPE (MARKER)
76+ #undef PER_GL_DEBUG_TYPE
11777 }
11878
11979 switch (severity) {
120- case GL_DEBUG_SEVERITY_HIGH:
121- _severity = " HIGH" ;
122- break ;
123-
124- case GL_DEBUG_SEVERITY_MEDIUM:
125- _severity = " MEDIUM" ;
126- break ;
127-
128- case GL_DEBUG_SEVERITY_LOW:
129- _severity = " LOW" ;
130- break ;
131-
132- case GL_DEBUG_SEVERITY_NOTIFICATION:
133- _severity = " NOTIFICATION" ;
134- break ;
135-
136- default :
137- _severity = " UNKNOWN" ;
138- break ;
80+ #define PER_GL_DEBUG_SEVERITY (x ) case GL_DEBUG_SEVERITY_##x: _severity = #x; break ;
81+ PER_GL_DEBUG_SEVERITY (HIGH)
82+ PER_GL_DEBUG_SEVERITY (MEDIUM)
83+ PER_GL_DEBUG_SEVERITY (LOW)
84+ PER_GL_DEBUG_SEVERITY (NOTIFICATION)
85+ #undef PER_GL_DEBUG_SEVERITY
13986 }
14087
141- if (severity != GL_DEBUG_SEVERITY_NOTIFICATION) {
142- fprintf (stderr, " OpenGL error [%d]: %s of %s severity, raised from %s: %s\n " ,
143- id, _type, _severity, _source, msg);
144- /* #ifndef NDEBUG */
145- /* #if defined(_MSC_VER) */
146- /* __debugbreak(); */
147- /* #elif defined(__GNUC__) */
148- /* __builtin_trap(); */
149- /* #endif */
150- /* #endif */
151- }
88+ fprintf (stderr, " OpenGL error [%d]: %s of %s severity, raised from %s: %s\n " ,
89+ id, _type, _severity, _source, msg);
90+ /* #ifndef NDEBUG */
91+ /* #if defined(_MSC_VER) */
92+ /* __debugbreak(); */
93+ /* #elif defined(__GNUC__) */
94+ /* __builtin_trap(); */
95+ /* #endif */
96+ /* #endif */
15297}
15398
15499void check_gl::opengl_try_enable_debug_message () {
0 commit comments