[Mesa-dev] [PATCH 04/15] mesa: Implement glPushDebugGroup and glPopDebugGroup

Brian Paul brianp at vmware.com
Mon Aug 26 07:51:46 PDT 2013


On 08/26/2013 04:43 AM, Timothy Arceri wrote:
[...]
> @@ -722,13 +769,112 @@ void GLAPIENTRY
>   _mesa_PushDebugGroup(GLenum source, GLuint id, GLsizei length,
>                        const GLchar *message)
>   {
> +   const char *callerstr = "glPushDebugGroup";
> +   int s, t, sev;
> +   GLint prevStackDepth;
> +   GLint currStackDepth;
> +   struct gl_debug_msg *emptySlot;
>
> +   GET_CURRENT_CONTEXT(ctx);
> +
> +   if (ctx->Debug.GroupStackDepth >= MAX_DEBUG_GROUP_STACK_DEPTH-1) {
> +      _mesa_error( ctx, GL_STACK_OVERFLOW, callerstr );
> +      return;
> +   }
> +
> +   switch(source) {
> +   case GL_DEBUG_SOURCE_APPLICATION:
> +   case GL_DEBUG_SOURCE_THIRD_PARTY:
> +      break;
> +   default:
> +      _mesa_error(ctx, GL_INVALID_ENUM, "bad value passed to %s"
> +                  "(source=0x%x)", callerstr, source);
> +      return;
> +   }
> +
> +   message_insert(source, GL_DEBUG_TYPE_PUSH_GROUP, id,
> +                  GL_DEBUG_SEVERITY_NOTIFICATION, length,
> +                  message, callerstr);
> +
> +   prevStackDepth = ctx->Debug.GroupStackDepth;
> +   ctx->Debug.GroupStackDepth++;
> +   currStackDepth = ctx->Debug.GroupStackDepth;
> +
> +   /* pop reuses the message details from push so we store this */
> +   if (length < 0)
> +      length = strlen(message);
> +   emptySlot = &ctx->Debug.DebugGroupMsgs[ctx->Debug.GroupStackDepth];
> +   store_message_details(emptySlot, gl_enum_to_debug_source(source),
> +                         gl_enum_to_debug_source(GL_DEBUG_TYPE_PUSH_GROUP),
> +                         id,
> +                   gl_enum_to_debug_severity(GL_DEBUG_SEVERITY_NOTIFICATION),
> +                         length, message);
> +
> +   /* inherit the control volume of the debug group previously residing on
> +    * the top of the debug group stack
> +    */
> +   for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++)
> +      for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) {
> +         /* copy id settings */
> +         ctx->Debug.Namespaces[currStackDepth][s][t].IDs =
> +            _mesa_HashClone(ctx->Debug.Namespaces[prevStackDepth][s][t].IDs);
> +
> +         for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++) {
> +            struct gl_debug_severity *entry, *prevEntry;
> +            struct simple_node *node;
> +
> +            /* copy default settings for unknown ids */
> +            ctx->Debug.Defaults[currStackDepth][sev][s][t] = ctx->Debug.Defaults[prevStackDepth][sev][s][t];
> +
> +            /* copy know id severity settings */

s/know/known/




More information about the mesa-dev mailing list