mesa: Report ARB_debug_output for both shader errors and warnings.
authorEric Anholt <eric@anholt.net>
Fri, 22 Feb 2013 23:57:25 +0000 (15:57 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 5 Mar 2013 22:25:00 +0000 (14:25 -0800)
This ends up reusing the dynamic ID support, so a silly enum gets to go
away.  We don't assign good IDs to different messages yet, but at least
that's tractable now.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/glsl/glsl_parser_extras.cpp
src/glsl/standalone_scaffolding.cpp
src/glsl/standalone_scaffolding.h
src/mesa/main/errors.c
src/mesa/main/errors.h

index 9d7de3381fd115a38a612ff42275bc561d31051f..56082f7615b7e368f69341976d3f966c6024eedd 100644 (file)
@@ -308,9 +308,10 @@ _mesa_glsl_shader_target_name(enum _mesa_glsl_parser_targets target)
    'id' is the implementation-defined ID of the given message. */
 static void
 _mesa_glsl_msg(const YYLTYPE *locp, _mesa_glsl_parse_state *state,
-               GLenum type, GLuint id, const char *fmt, va_list ap)
+               GLenum type, const char *fmt, va_list ap)
 {
-   bool error = (type == GL_DEBUG_TYPE_ERROR_ARB);
+   bool error = (type == MESA_DEBUG_TYPE_ERROR);
+   GLuint msg_id = 0;
 
    assert(state->info_log != NULL);
 
@@ -326,9 +327,9 @@ _mesa_glsl_msg(const YYLTYPE *locp, _mesa_glsl_parse_state *state,
 
    const char *const msg = &state->info_log[msg_offset];
    struct gl_context *ctx = state->ctx;
+
    /* Report the error via GL_ARB_debug_output. */
-   if (error)
-      _mesa_shader_debug(ctx, type, id, msg, strlen(msg));
+   _mesa_shader_debug(ctx, type, &msg_id, msg, strlen(msg));
 
    ralloc_strcat(&state->info_log, "\n");
 }
@@ -338,12 +339,11 @@ _mesa_glsl_error(YYLTYPE *locp, _mesa_glsl_parse_state *state,
                 const char *fmt, ...)
 {
    va_list ap;
-   GLenum type = GL_DEBUG_TYPE_ERROR_ARB;
 
    state->error = true;
 
    va_start(ap, fmt);
-   _mesa_glsl_msg(locp, state, type, SHADER_ERROR_UNKNOWN, fmt, ap);
+   _mesa_glsl_msg(locp, state, MESA_DEBUG_TYPE_ERROR, fmt, ap);
    va_end(ap);
 }
 
@@ -353,10 +353,9 @@ _mesa_glsl_warning(const YYLTYPE *locp, _mesa_glsl_parse_state *state,
                   const char *fmt, ...)
 {
    va_list ap;
-   GLenum type = GL_DEBUG_TYPE_OTHER_ARB;
 
    va_start(ap, fmt);
-   _mesa_glsl_msg(locp, state, type, 0, fmt, ap);
+   _mesa_glsl_msg(locp, state, MESA_DEBUG_TYPE_OTHER, fmt, ap);
    va_end(ap);
 }
 
index 8c0091e842f19db1e48797bfb5df557957eca15a..b5ef768bd775e912890e6389c12426aca8540819 100644 (file)
@@ -60,7 +60,7 @@ _mesa_reference_shader(struct gl_context *ctx, struct gl_shader **ptr,
 }
 
 void
-_mesa_shader_debug(struct gl_context *, GLenum, GLuint,
+_mesa_shader_debug(struct gl_context *, GLenum, GLuint *id,
                    const char *, int)
 {
 }
index 096b2f114c7ed219b2c13538543bb249231c2176..0a2cde8a34831998cd635ba6cf439dc0c0597175 100644 (file)
@@ -44,7 +44,7 @@ extern "C" struct gl_shader *
 _mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type);
 
 extern "C" void
-_mesa_shader_debug(struct gl_context *ctx, GLenum type, GLuint id,
+_mesa_shader_debug(struct gl_context *ctx, GLenum type, GLuint *id,
                    const char *msg, int len);
 
 /**
index 3c720bc55007b8001934322d280c78e2ce5f4684..9dcf4ebee9e52b8b02f450ff29e0e2d56c134635 100644 (file)
@@ -1009,12 +1009,14 @@ _mesa_debug( const struct gl_context *ctx, const char *fmtString, ... )
  * \param len The length of 'msg'. If negative, 'msg' must be null-terminated.
  */
 void
-_mesa_shader_debug( struct gl_context *ctx, GLenum type, GLuint id,
+_mesa_shader_debug( struct gl_context *ctx, GLenum type, GLuint *id,
                     const char *msg, int len )
 {
    enum mesa_debug_source source = MESA_DEBUG_SOURCE_SHADER_COMPILER;
    enum mesa_debug_severity severity = MESA_DEBUG_SEVERITY_HIGH;
 
+   debug_get_id(id);
+
    if (len < 0)
       len = strlen(msg);
 
@@ -1022,7 +1024,7 @@ _mesa_shader_debug( struct gl_context *ctx, GLenum type, GLuint id,
    if (len >= MAX_DEBUG_MESSAGE_LENGTH)
       len = MAX_DEBUG_MESSAGE_LENGTH - 1;
 
-   _mesa_log_msg(ctx, source, type, id, severity, len, msg);
+   _mesa_log_msg(ctx, source, type, *id, severity, len, msg);
 }
 
 /*@}*/
index aa69931a815c85624cc190f8caa9957d7570f980..7d8be5aca7679d5d610faccba2a6141469bc6226 100644 (file)
@@ -74,7 +74,8 @@ _mesa_gl_debug(struct gl_context *ctx,
                const char *fmtString, ...) PRINTFLIKE(5, 6);
 
 extern void
-_mesa_shader_debug( struct gl_context *ctx, GLenum type, GLuint id, const char *msg, int len );
+_mesa_shader_debug(struct gl_context *ctx, GLenum type, GLuint *id,
+                   const char *msg, int len);
 
 void GLAPIENTRY
 _mesa_DebugMessageInsertARB(GLenum source, GLenum type, GLuint id,