Lines Matching defs:debug
70 * An error, warning, or other piece of debug information for an application
87 * Debug message log. It works like a ring buffer.
186 * building a giant enum list of all debug output messages that Mesa might
404 * Allocate and initialize context debug state.
409 struct gl_debug_state *debug;
412 debug = CALLOC_STRUCT(gl_debug_state);
413 if (!debug)
416 debug->Groups[0] = malloc(sizeof(*debug->Groups[0]));
417 if (!debug->Groups[0]) {
418 free(debug);
422 /* Initialize state for filtering known debug messages. */
425 debug_namespace_init(&debug->Groups[0]->Namespaces[s][t]);
428 return debug;
432 * Return true if the top debug group points to the group below it.
435 debug_is_group_read_only(const struct gl_debug_state *debug)
437 const GLint gstack = debug->CurrentGroup;
438 return (gstack > 0 && debug->Groups[gstack] == debug->Groups[gstack - 1]);
442 * Make the top debug group writable.
445 debug_make_group_writable(struct gl_debug_state *debug)
447 const GLint gstack = debug->CurrentGroup;
448 const struct gl_debug_group *src = debug->Groups[gstack];
452 if (!debug_is_group_read_only(debug))
476 debug->Groups[gstack] = dst;
482 * Free the top debug group.
485 debug_clear_group(struct gl_debug_state *debug)
487 const GLint gstack = debug->CurrentGroup;
489 if (!debug_is_group_read_only(debug)) {
490 struct gl_debug_group *grp = debug->Groups[gstack];
501 debug->Groups[gstack] = NULL;
505 * Loop through debug group stack tearing down states for
506 * filtering debug messages. Then free debug output state.
509 debug_destroy(struct gl_debug_state *debug)
511 while (debug->CurrentGroup > 0) {
512 debug_clear_group(debug);
513 debug->CurrentGroup--;
516 debug_clear_group(debug);
517 free(debug);
524 debug_set_message_enable(struct gl_debug_state *debug,
529 const GLint gstack = debug->CurrentGroup;
532 debug_make_group_writable(debug);
533 ns = &debug->Groups[gstack]->Namespaces[source][type];
550 debug_set_message_enable_all(struct gl_debug_state *debug,
556 const GLint gstack = debug->CurrentGroup;
573 debug_make_group_writable(debug);
578 &debug->Groups[gstack]->Namespaces[s][t];
588 _mesa_debug_is_message_enabled(const struct gl_debug_state *debug,
594 const GLint gstack = debug->CurrentGroup;
595 struct gl_debug_group *grp = debug->Groups[gstack];
598 if (!debug->DebugOutput)
611 debug_log_message(struct gl_debug_state *debug,
617 struct gl_debug_log *log = &debug->Log;
621 if (debug->LogToStderr) {
622 _mesa_log("Mesa debug output: %.*s\n", len, buf);
641 * Return the oldest debug message out of the log.
644 debug_fetch_message(const struct gl_debug_state *debug)
646 const struct gl_debug_log *log = &debug->Log;
652 * Delete the oldest debug messages out of the log.
655 debug_delete_messages(struct gl_debug_state *debug, int count)
657 struct gl_debug_log *log = &debug->Log;
674 debug_get_group_message(struct gl_debug_state *debug)
676 return &debug->GroupMessages[debug->CurrentGroup];
680 debug_push_group(struct gl_debug_state *debug)
682 const GLint gstack = debug->CurrentGroup;
685 debug->Groups[gstack + 1] = debug->Groups[gstack];
686 debug->CurrentGroup++;
690 debug_pop_group(struct gl_debug_state *debug)
692 debug_clear_group(debug);
693 debug->CurrentGroup--;
698 * Lock and return debug state for the context. The debug state will be
700 * debug state is not locked.
707 if (!ctx->Debug) {
708 ctx->Debug = debug_create();
709 if (!ctx->Debug) {
718 _mesa_error(ctx, GL_OUT_OF_MEMORY, "allocating debug state");
724 return ctx->Debug;
734 * Set the integer debug state specified by \p pname. This can be called from
740 struct gl_debug_state *debug = _mesa_lock_debug_state(ctx);
742 if (!debug)
747 debug->DebugOutput = (val != 0);
750 debug->SyncOutput = (val != 0);
753 assert(!"unknown debug output param");
763 * Query the integer debug state specified by \p pname. This can be called
771 struct gl_debug_state *debug = _mesa_lock_debug_state(ctx);
772 if (!debug)
777 val = debug->DebugOutput;
780 val = debug->SyncOutput;
783 val = debug->Log.NumMessages;
786 val = (debug->Log.NumMessages) ?
787 debug->Log.Messages[debug->Log.NextMessage].length + 1 : 0;
790 val = debug->CurrentGroup + 1;
793 assert(!"unknown debug output param");
804 * Query the pointer debug state specified by \p pname. This can be called
811 struct gl_debug_state *debug = _mesa_lock_debug_state(ctx);
813 if (!debug)
818 val = (void *) debug->Callback;
821 val = (void *) debug->CallbackData;
824 assert(!"unknown debug output param");
835 * Insert a debug message. The mutex is assumed to be locked, and will be
845 struct gl_debug_state *debug = ctx->Debug;
847 if (!_mesa_debug_is_message_enabled(debug, source, type, id, severity)) {
852 if (ctx->Debug->Callback) {
857 GLDEBUGPROC callback = ctx->Debug->Callback;
858 const void *data = ctx->Debug->CallbackData;
861 * When ctx->Debug->SyncOutput is GL_FALSE, the client is prepared for
869 /* add debug message to queue */
870 debug_log_message(ctx->Debug, source, type, id, severity, len, buf);
876 * Log a client or driver debug message.
883 struct gl_debug_state *debug = _mesa_lock_debug_state(ctx);
885 if (!debug)
1040 struct gl_debug_state *debug;
1059 debug = _mesa_lock_debug_state(ctx);
1060 if (!debug)
1064 const struct gl_debug_message *msg = debug_fetch_message(debug);
1096 debug_delete_messages(debug, 1);
1115 struct gl_debug_state *debug;
1142 debug = _mesa_lock_debug_state(ctx);
1143 if (!debug)
1149 debug_set_message_enable(debug, source, type, ids[i], enabled);
1152 debug_set_message_enable_all(debug, source, type, severity, enabled);
1163 struct gl_debug_state *debug = _mesa_lock_debug_state(ctx);
1164 if (debug) {
1165 debug->Callback = callback;
1166 debug->CallbackData = userParam;
1178 struct gl_debug_state *debug;
1202 debug = _mesa_lock_debug_state(ctx);
1203 if (!debug)
1206 if (debug->CurrentGroup >= MAX_DEBUG_GROUP_STACK_DEPTH-1) {
1213 emptySlot = debug_get_group_message(debug);
1221 debug_push_group(debug);
1236 struct gl_debug_state *debug;
1244 debug = _mesa_lock_debug_state(ctx);
1245 if (!debug)
1248 if (debug->CurrentGroup <= 0) {
1254 debug_pop_group(debug);
1257 gdmessage = debug_get_group_message(debug);
1280 * GL_CONTEXT_FLAG_DEBUG_BIT context flag and log debug output
1283 struct gl_debug_state *debug = _mesa_lock_debug_state(ctx);
1284 if (!debug) {
1287 debug->DebugOutput = GL_TRUE;
1288 debug->LogToStderr = GL_TRUE;
1298 if (ctx->Debug) {
1299 debug_destroy(ctx->Debug);
1301 ctx->Debug = NULL;