@@ -273,6 +273,21 @@ def render(self):
273
273
274
274
PROFILE = False
275
275
276
+ @GLDEBUGPROC
277
+ def gl_debug_callback (source , type , id , severity , length , message , user_param ):
278
+ def fmt (enum ):
279
+ try :
280
+ return GL_ENUMS [enum ].removeprefix ("GL_DEBUG_" ).removesuffix ("_KHR" ).removesuffix ("_ARB" ).replace ("_" ," " )
281
+ except :
282
+ return "(format error)"
283
+ msg = f"OPENGL DEBUG CALLBACK ({ id } ):\n { fmt (type )} > { fmt (severity )} > { fmt (source )} \n { message .decode ('utf-8' )} "
284
+ if type == GL_DEBUG_TYPE_ERROR :
285
+ LOG .error (msg )
286
+ elif severity == GL_DEBUG_SEVERITY_NOTIFICATION :
287
+ LOG .info (msg )
288
+ else :
289
+ LOG .warning (msg )
290
+
276
291
def main (pipeline_path , viewport_bit_depth , connection_addresses ,
277
292
shared_dic , lock , log_path , debug_mode , plugins_paths , docs_path ):
278
293
LOG .info ('DEBUG MODE: {}' .format (debug_mode ))
@@ -290,8 +305,16 @@ def main(pipeline_path, viewport_bit_depth, connection_addresses,
290
305
glfw .window_hint (glfw .CONTEXT_VERSION_MINOR , 5 )
291
306
glfw .window_hint (glfw .OPENGL_PROFILE , glfw .OPENGL_CORE_PROFILE )
292
307
308
+ if debug_mode :
309
+ glfw .window_hint (glfw .OPENGL_DEBUG_CONTEXT , True )
310
+
293
311
window = glfw .create_window (256 , 256 , 'Malt' , None , None )
294
312
glfw .make_context_current (window )
313
+
314
+ if debug_mode :
315
+ glEnable (GL_DEBUG_OUTPUT )
316
+ glDebugMessageCallback (gl_debug_callback , None )
317
+
295
318
# Don't hide for better OS/Drivers schedule priority
296
319
#glfw.hide_window(window)
297
320
# Minimize instead:
0 commit comments