errors.h revision 848b8605
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 "compiler.h" 40#include "glheader.h" 41 42 43#ifdef __cplusplus 44extern "C" { 45#endif 46 47#include "mtypes.h" 48 49struct _glapi_table; 50 51extern void 52_mesa_init_errors( struct gl_context *ctx ); 53 54extern void 55_mesa_free_errors_data( struct gl_context *ctx ); 56 57extern void 58_mesa_warning( struct gl_context *gc, const char *fmtString, ... ) PRINTFLIKE(2, 3); 59 60extern void 61_mesa_problem( const struct gl_context *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); 62 63extern void 64_mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... ) PRINTFLIKE(3, 4); 65 66extern void 67_mesa_error_no_memory(const char *caller); 68 69extern void 70_mesa_debug( const struct gl_context *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3); 71 72extern void 73_mesa_gl_debug(struct gl_context *ctx, 74 GLuint *id, 75 enum mesa_debug_type type, 76 enum mesa_debug_severity severity, 77 const char *fmtString, ...) PRINTFLIKE(5, 6); 78 79#define _mesa_perf_debug(ctx, sev, ...) do { \ 80 static GLuint msg_id = 0; \ 81 if (unlikely(ctx->Const.ContextFlags & GL_CONTEXT_FLAG_DEBUG_BIT)) { \ 82 _mesa_gl_debug(ctx, &msg_id, \ 83 MESA_DEBUG_TYPE_PERFORMANCE, \ 84 sev, \ 85 __VA_ARGS__); \ 86 } \ 87} while (0) 88 89bool 90_mesa_set_debug_state_int(struct gl_context *ctx, GLenum pname, GLint val); 91 92GLint 93_mesa_get_debug_state_int(struct gl_context *ctx, GLenum pname); 94 95void * 96_mesa_get_debug_state_ptr(struct gl_context *ctx, GLenum pname); 97 98extern void 99_mesa_shader_debug(struct gl_context *ctx, GLenum type, GLuint *id, 100 const char *msg, int len); 101 102void GLAPIENTRY 103_mesa_DebugMessageInsert(GLenum source, GLenum type, GLuint id, 104 GLenum severity, GLint length, 105 const GLchar* buf); 106GLuint GLAPIENTRY 107_mesa_GetDebugMessageLog(GLuint count, GLsizei logSize, GLenum* sources, 108 GLenum* types, GLenum* ids, GLenum* severities, 109 GLsizei* lengths, GLchar* messageLog); 110void GLAPIENTRY 111_mesa_DebugMessageControl(GLenum source, GLenum type, GLenum severity, 112 GLsizei count, const GLuint *ids, 113 GLboolean enabled); 114void GLAPIENTRY 115_mesa_DebugMessageCallback(GLDEBUGPROC callback, 116 const void *userParam); 117void GLAPIENTRY 118_mesa_PushDebugGroup(GLenum source, GLuint id, GLsizei length, 119 const GLchar *message); 120void GLAPIENTRY 121_mesa_PopDebugGroup(void); 122 123#ifdef __cplusplus 124} 125#endif 126 127 128#endif /* ERRORS_H */ 129