[Mesa-dev] [PATCH 2/4] mesa: make ARB_debug_output functions an alias of KHR_debug

Brian Paul brianp at vmware.com
Mon Mar 3 07:07:18 PST 2014


On 03/03/2014 01:33 AM, Timothy Arceri wrote:
> The spec doesn't mention how ARB_debug_output and KHR_debug should
>   interact but testing with Nvidia and AMD shows this is how they both
>   treat these functions
>
> Signed-off-by: Timothy Arceri <t_arceri at yahoo.com.au>
> ---
>   src/mapi/glapi/gen/ARB_debug_output.xml |   8 +-
>   src/mesa/main/errors.c                  | 293 ++++++++------------------------
>   src/mesa/main/errors.h                  |  15 --
>   src/mesa/main/mtypes.h                  |   1 -
>   4 files changed, 78 insertions(+), 239 deletions(-)
>
> diff --git a/src/mapi/glapi/gen/ARB_debug_output.xml b/src/mapi/glapi/gen/ARB_debug_output.xml
> index 11f268d..0468d57 100644
> --- a/src/mapi/glapi/gen/ARB_debug_output.xml
> +++ b/src/mapi/glapi/gen/ARB_debug_output.xml
> @@ -52,7 +52,7 @@
>       <enum name="DEBUG_SEVERITY_LOW_ARB"                    value="0x9148"/>
>
>
> -    <function name="DebugMessageControlARB" offset="assign">
> +    <function name="DebugMessageControlARB" alias="DebugMessageControl">
>           <param name="source" type="GLenum"/>
>           <param name="type" type="GLenum"/>
>           <param name="severity" type="GLenum"/>
> @@ -61,7 +61,7 @@
>           <param name="enabled" type="GLboolean"/>
>       </function>
>
> -    <function name="DebugMessageInsertARB" offset="assign">
> +    <function name="DebugMessageInsertARB" alias="DebugMessageInsert">
>           <param name="source" type="GLenum"/>
>           <param name="type" type="GLenum"/>
>           <param name="id" type="GLuint"/>
> @@ -70,12 +70,12 @@
>           <param name="buf" type="const GLcharARB *"/>
>       </function>
>
> -    <function name="DebugMessageCallbackARB" offset="assign">
> +    <function name="DebugMessageCallbackARB" alias="DebugMessageCallback">
>           <param name="callback" type="GLDEBUGPROCARB"/>
>           <param name="userParam" type="const GLvoid *"/>
>       </function>
>
> -    <function name="GetDebugMessageLogARB" offset="assign">
> +    <function name="GetDebugMessageLogARB" alias="GetDebugMessageLog">
>           <return type="GLuint"/>
>           <param name="count" type="GLuint"/>
>           <param name="bufsize" type="GLsizei"/>
> diff --git a/src/mesa/main/errors.c b/src/mesa/main/errors.c
> index 5f4eac6..003d0d4 100644
> --- a/src/mesa/main/errors.c
> +++ b/src/mesa/main/errors.c
> @@ -39,9 +39,6 @@
>   #include "hash_table.h"
>   #include "glapi/glthread.h"
>
> -#define MESSAGE_LOG 1
> -#define MESSAGE_LOG_ARB 2
> -
>   _glthread_DECLARE_STATIC_MUTEX(DynamicIDMutex);
>   static GLuint NextDynamicID = 1;
>
> @@ -374,40 +371,6 @@ store_message_details(struct gl_debug_msg *emptySlot,
>
>
>   /**
> - * Remap any type exclusive to KHR_debug to something suitable
> - * for ARB_debug_output
> - */
> -inline static int
> -remap_type(GLenum type) {
> -
> -   switch(type) {
> -   case GL_DEBUG_TYPE_MARKER:
> -   case GL_DEBUG_TYPE_PUSH_GROUP:
> -   case GL_DEBUG_TYPE_POP_GROUP:
> -      type = GL_DEBUG_TYPE_OTHER;
> -   default:
> -      ;
> -   }
> -
> -  return type;
> -}
> -
> -
> -/**
> - * Remap severity exclusive to KHR_debug to something suitable
> - * for ARB_debug_output
> - */
> -inline static int
> -remap_severity(GLenum severity) {
> -
> -   if (GL_DEBUG_SEVERITY_NOTIFICATION == severity)
> -      severity = GL_DEBUG_SEVERITY_LOW;
> -
> -   return severity;
> -}
> -
> -
> -/**
>    * 'buf' is not necessarily a null-terminated string. When logging, copy
>    * 'len' characters from it, store them in a new, null-terminated string,
>    * and remember the number of bytes used by that string, *including*
> @@ -434,10 +397,6 @@ log_msg(struct gl_context *ctx, enum mesa_debug_source source,
>          GLenum gl_type = debug_type_enums[type];
>          GLenum gl_severity = debug_severity_enums[severity];
>
> -       if (debug->ARBCallback) {
> -          gl_severity = remap_severity(gl_severity);
> -          gl_type = remap_type(gl_type);
> -      }
>         debug->Callback(debug_source_enums[source], gl_type, id, gl_severity,
>                         len, buf, debug->CallbackData);
>         return;
> @@ -471,8 +430,7 @@ log_msg(struct gl_context *ctx, enum mesa_debug_source source,
>    */
>   static GLsizei
>   get_msg(struct gl_context *ctx, GLenum *source, GLenum *type,
> -        GLuint *id, GLenum *severity, GLsizei bufSize, char *buf,
> -        unsigned caller)
> +        GLuint *id, GLenum *severity, GLsizei bufSize, char *buf)
>   {
>      struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
>      struct gl_debug_msg *msg;
> @@ -491,8 +449,6 @@ get_msg(struct gl_context *ctx, GLenum *source, GLenum *type,
>
>      if (severity) {
>         *severity = debug_severity_enums[msg->severity];
> -      if (caller == MESSAGE_LOG_ARB)
> -         *severity = remap_severity(*severity);
>      }
>
>      if (source) {
> @@ -501,8 +457,6 @@ get_msg(struct gl_context *ctx, GLenum *source, GLenum *type,
>
>      if (type) {
>         *type = debug_type_enums[msg->type];
> -      if (caller == MESSAGE_LOG_ARB)
> -         *type = remap_type(*type);
>      }
>
>      if (id) {
> @@ -530,12 +484,9 @@ get_msg(struct gl_context *ctx, GLenum *source, GLenum *type,
>
>   /**
>    * Verify that source, type, and severity are valid enums.
> - * glDebugMessageInsertARB only accepts two values for 'source',
> - * and glDebugMessageControlARB will additionally accept GL_DONT_CARE
> - * in any parameter, so handle those cases specially.
>    *
> - * There is also special cases for handling values available in
> - * GL_KHR_debug that are not avaliable in GL_ARB_debug_output
> + * The 'caller' param is used for handling values available
> + * only in glDebugMessageInsert or glDebugMessageControl
>    */
>   static GLboolean
>   validate_params(struct gl_context *ctx, unsigned caller,
> @@ -544,8 +495,6 @@ validate_params(struct gl_context *ctx, unsigned caller,
>   {
>   #define INSERT 1
>   #define CONTROL 2
> -#define INSERT_ARB 3
> -#define CONTROL_ARB 4
>      switch(source) {
>      case GL_DEBUG_SOURCE_APPLICATION_ARB:
>      case GL_DEBUG_SOURCE_THIRD_PARTY_ARB:
> @@ -554,10 +503,10 @@ validate_params(struct gl_context *ctx, unsigned caller,
>      case GL_DEBUG_SOURCE_SHADER_COMPILER_ARB:
>      case GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB:
>      case GL_DEBUG_SOURCE_OTHER_ARB:
> -      if (caller != INSERT || caller == INSERT_ARB)
> +      if (caller != INSERT)
>            break;

else goto error;  ?


>      case GL_DONT_CARE:
> -      if (caller == CONTROL || caller == CONTROL_ARB)
> +      if (caller == CONTROL)
>            break;

else goto error;  ?

and more casese below...


>      default:
>         goto error;
> @@ -570,13 +519,10 @@ validate_params(struct gl_context *ctx, unsigned caller,
>      case GL_DEBUG_TYPE_PERFORMANCE_ARB:
>      case GL_DEBUG_TYPE_PORTABILITY_ARB:
>      case GL_DEBUG_TYPE_OTHER_ARB:
> -      break;
>      case GL_DEBUG_TYPE_MARKER:
> -      /* this value is only valid for GL_KHR_debug functions */
> -      if (caller == CONTROL || caller == INSERT)
> -         break;
> +      break;
>      case GL_DONT_CARE:
> -      if (caller == CONTROL || caller == CONTROL_ARB)
> +      if (caller == CONTROL)
>            break;
>      default:
>         goto error;
> @@ -586,13 +532,10 @@ validate_params(struct gl_context *ctx, unsigned caller,
>      case GL_DEBUG_SEVERITY_HIGH_ARB:
>      case GL_DEBUG_SEVERITY_MEDIUM_ARB:
>      case GL_DEBUG_SEVERITY_LOW_ARB:
> -      break;
>      case GL_DEBUG_SEVERITY_NOTIFICATION:
> -      /* this value is only valid for GL_KHR_debug functions */
> -      if (caller == CONTROL || caller == INSERT)
> -         break;
> +      break;
>      case GL_DONT_CARE:
> -      if (caller == CONTROL || caller == CONTROL_ARB)
> +      if (caller == CONTROL)
>            break;
>      default:
>         goto error;
> @@ -707,44 +650,6 @@ control_app_messages(struct gl_context *ctx, GLenum esource, GLenum etype,
[...]

Otherwise, the series looks OK to me.

Reviewed-by: Brian Paul <brianp at vmware.com>




More information about the mesa-dev mailing list