1/*
2 * Mesa 3-D graphics library
3 *
4 * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included
14 * in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 * OTHER DEALINGS IN THE SOFTWARE.
23 */
24
25
26/**
27 * \file errors.h
28 * Mesa debugging and error handling functions.
29 *
30 * This file provides functions to record errors, warnings, and miscellaneous
31 * debug information.
32 */
33
34
35#ifndef ERRORS_H
36#define ERRORS_H
37
38
39#include <stdio.h>
40#include <stdarg.h>
41#include "compiler.h"
42#include "glheader.h"
43#include "mtypes.h"
44
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50extern void
51_mesa_warning( struct gl_context *gc, const char *fmtString, ... ) PRINTFLIKE(2, 3);
52
53extern void
54_mesa_problem( const struct gl_context *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3);
55
56extern void
57_mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... ) PRINTFLIKE(3, 4);
58
59extern void
60_mesa_error_no_memory(const char *caller);
61
62extern void
63_mesa_debug( const struct gl_context *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3);
64
65extern void
66_mesa_log(const char *fmtString, ...) PRINTFLIKE(1, 2);
67
68extern FILE *
69_mesa_get_log_file(void);
70
71void
72_mesa_shader_debug(struct gl_context *ctx, GLenum type, GLuint *id,
73                   const char *msg);
74
75extern void
76_mesa_gl_vdebug(struct gl_context *ctx,
77                GLuint *id,
78                enum mesa_debug_source source,
79                enum mesa_debug_type type,
80                enum mesa_debug_severity severity,
81                const char *fmtString,
82                va_list args);
83
84extern void
85_mesa_gl_debug(struct gl_context *ctx,
86               GLuint *id,
87               enum mesa_debug_source source,
88               enum mesa_debug_type type,
89               enum mesa_debug_severity severity,
90               const char *fmtString, ...) PRINTFLIKE(6, 7);
91
92#define _mesa_perf_debug(ctx, sev, ...) do {                              \
93   static GLuint msg_id = 0;                                              \
94   if (unlikely(ctx->Const.ContextFlags & GL_CONTEXT_FLAG_DEBUG_BIT)) {   \
95      _mesa_gl_debug(ctx, &msg_id,                                        \
96                     MESA_DEBUG_SOURCE_API,                               \
97                     MESA_DEBUG_TYPE_PERFORMANCE,                         \
98                     sev,                                                 \
99                     __VA_ARGS__);                                        \
100   }                                                                      \
101} while (0)
102
103
104#ifdef __cplusplus
105}
106#endif
107
108
109#endif /* ERRORS_H */
110