diff options
-rw-r--r-- | src/gallium/drivers/ilo/Makefile.sources | 2 | ||||
-rw-r--r-- | src/gallium/drivers/ilo/core/ilo_debug.c | 51 | ||||
-rw-r--r-- | src/gallium/drivers/ilo/core/ilo_debug.h | 103 | ||||
-rw-r--r-- | src/gallium/drivers/ilo/ilo_common.h | 68 | ||||
-rw-r--r-- | src/gallium/drivers/ilo/ilo_screen.c | 19 |
5 files changed, 158 insertions, 85 deletions
diff --git a/src/gallium/drivers/ilo/Makefile.sources b/src/gallium/drivers/ilo/Makefile.sources index be5afb144cd..61c737b150d 100644 --- a/src/gallium/drivers/ilo/Makefile.sources +++ b/src/gallium/drivers/ilo/Makefile.sources @@ -1,5 +1,7 @@ C_SOURCES := \ core/ilo_core.h \ + core/ilo_debug.c \ + core/ilo_debug.h \ core/intel_winsys.h \ ilo_blit.c \ ilo_blit.h \ diff --git a/src/gallium/drivers/ilo/core/ilo_debug.c b/src/gallium/drivers/ilo/core/ilo_debug.c new file mode 100644 index 00000000000..168818bf4e2 --- /dev/null +++ b/src/gallium/drivers/ilo/core/ilo_debug.c @@ -0,0 +1,51 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 2012-2013 LunarG, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu <[email protected]> + */ + +#include "ilo_debug.h" + +static const struct debug_named_value ilo_debug_flags[] = { + { "batch", ILO_DEBUG_BATCH, "Dump batch/dynamic/surface/instruction buffers" }, + { "vs", ILO_DEBUG_VS, "Dump vertex shaders" }, + { "gs", ILO_DEBUG_GS, "Dump geometry shaders" }, + { "fs", ILO_DEBUG_FS, "Dump fragment shaders" }, + { "cs", ILO_DEBUG_CS, "Dump compute shaders" }, + { "draw", ILO_DEBUG_DRAW, "Show draw information" }, + { "submit", ILO_DEBUG_SUBMIT, "Show batch buffer submissions" }, + { "hang", ILO_DEBUG_HANG, "Detect GPU hangs" }, + { "nohw", ILO_DEBUG_NOHW, "Do not send commands to HW" }, + { "nocache", ILO_DEBUG_NOCACHE, "Always invalidate HW caches" }, + { "nohiz", ILO_DEBUG_NOHIZ, "Disable HiZ" }, + DEBUG_NAMED_VALUE_END +}; + +int ilo_debug; + +void +ilo_debug_init(const char *name) +{ + ilo_debug = debug_get_flags_option(name, ilo_debug_flags, 0); +} diff --git a/src/gallium/drivers/ilo/core/ilo_debug.h b/src/gallium/drivers/ilo/core/ilo_debug.h new file mode 100644 index 00000000000..d9c460498ff --- /dev/null +++ b/src/gallium/drivers/ilo/core/ilo_debug.h @@ -0,0 +1,103 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 2012-2013 LunarG, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu <[email protected]> + */ + +#ifndef ILO_DEBUG_H +#define ILO_DEBUG_H + +#include "ilo_core.h" + +/* enable debug flags affecting hot pathes only with debug builds */ +#ifdef DEBUG +#define ILO_DEBUG_HOT 1 +#else +#define ILO_DEBUG_HOT 0 +#endif + +enum ilo_debug { + ILO_DEBUG_BATCH = 1 << 0, + ILO_DEBUG_VS = 1 << 1, + ILO_DEBUG_GS = 1 << 2, + ILO_DEBUG_FS = 1 << 3, + ILO_DEBUG_CS = 1 << 4, + ILO_DEBUG_DRAW = ILO_DEBUG_HOT << 5, + ILO_DEBUG_SUBMIT = 1 << 6, + ILO_DEBUG_HANG = 1 << 7, + + /* flags that affect the behaviors of the driver */ + ILO_DEBUG_NOHW = 1 << 20, + ILO_DEBUG_NOCACHE = 1 << 21, + ILO_DEBUG_NOHIZ = 1 << 22, +}; + +extern int ilo_debug; + +void +ilo_debug_init(const char *name); + +/** + * Print a message, for dumping or debugging. + */ +static inline void _util_printf_format(1, 2) +ilo_printf(const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + _debug_vprintf(format, ap); + va_end(ap); +} + +/** + * Print a critical error. + */ +static inline void _util_printf_format(1, 2) +ilo_err(const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + _debug_vprintf(format, ap); + va_end(ap); +} + +/** + * Print a warning, silenced for release builds. + */ +static inline void _util_printf_format(1, 2) +ilo_warn(const char *format, ...) +{ +#ifdef DEBUG + va_list ap; + + va_start(ap, format); + _debug_vprintf(format, ap); + va_end(ap); +#else +#endif +} + +#endif /* ILO_DEBUG_H */ diff --git a/src/gallium/drivers/ilo/ilo_common.h b/src/gallium/drivers/ilo/ilo_common.h index b685c446fc5..996de022901 100644 --- a/src/gallium/drivers/ilo/ilo_common.h +++ b/src/gallium/drivers/ilo/ilo_common.h @@ -29,35 +29,13 @@ #define ILO_COMMON_H #include "core/ilo_core.h" +#include "core/ilo_debug.h" #define ILO_GEN(gen) ((int) (gen * 100)) -/* enable debug flags affecting hot pathes only with debug builds */ -#ifdef DEBUG -#define ILO_DEBUG_HOT 1 -#else -#define ILO_DEBUG_HOT 0 -#endif - #define ILO_DEV_ASSERT(dev, min_gen, max_gen) \ ilo_dev_assert(dev, ILO_GEN(min_gen), ILO_GEN(max_gen)) -enum ilo_debug { - ILO_DEBUG_BATCH = 1 << 0, - ILO_DEBUG_VS = 1 << 1, - ILO_DEBUG_GS = 1 << 2, - ILO_DEBUG_FS = 1 << 3, - ILO_DEBUG_CS = 1 << 4, - ILO_DEBUG_DRAW = ILO_DEBUG_HOT << 5, - ILO_DEBUG_SUBMIT = 1 << 6, - ILO_DEBUG_HANG = 1 << 7, - - /* flags that affect the behaviors of the driver */ - ILO_DEBUG_NOHW = 1 << 20, - ILO_DEBUG_NOCACHE = 1 << 21, - ILO_DEBUG_NOHIZ = 1 << 22, -}; - struct ilo_dev_info { /* these mirror intel_winsys_info */ int devid; @@ -79,8 +57,6 @@ struct ilo_dev_info { int urb_size; }; -extern int ilo_debug; - static inline int ilo_dev_gen(const struct ilo_dev_info *dev) { @@ -93,46 +69,4 @@ ilo_dev_assert(const struct ilo_dev_info *dev, int min_opqaue, int max_opqaue) assert(dev->gen_opaque >= min_opqaue && dev->gen_opaque <= max_opqaue); } -/** - * Print a message, for dumping or debugging. - */ -static inline void _util_printf_format(1, 2) -ilo_printf(const char *format, ...) -{ - va_list ap; - - va_start(ap, format); - _debug_vprintf(format, ap); - va_end(ap); -} - -/** - * Print a critical error. - */ -static inline void _util_printf_format(1, 2) -ilo_err(const char *format, ...) -{ - va_list ap; - - va_start(ap, format); - _debug_vprintf(format, ap); - va_end(ap); -} - -/** - * Print a warning, silenced for release builds. - */ -static inline void _util_printf_format(1, 2) -ilo_warn(const char *format, ...) -{ -#ifdef DEBUG - va_list ap; - - va_start(ap, format); - _debug_vprintf(format, ap); - va_end(ap); -#else -#endif -} - #endif /* ILO_COMMON_H */ diff --git a/src/gallium/drivers/ilo/ilo_screen.c b/src/gallium/drivers/ilo/ilo_screen.c index d34c8394e64..3be13486392 100644 --- a/src/gallium/drivers/ilo/ilo_screen.c +++ b/src/gallium/drivers/ilo/ilo_screen.c @@ -45,23 +45,6 @@ struct ilo_fence { struct intel_bo *bo; }; -int ilo_debug; - -static const struct debug_named_value ilo_debug_flags[] = { - { "batch", ILO_DEBUG_BATCH, "Dump batch/dynamic/surface/instruction buffers" }, - { "vs", ILO_DEBUG_VS, "Dump vertex shaders" }, - { "gs", ILO_DEBUG_GS, "Dump geometry shaders" }, - { "fs", ILO_DEBUG_FS, "Dump fragment shaders" }, - { "cs", ILO_DEBUG_CS, "Dump compute shaders" }, - { "draw", ILO_DEBUG_DRAW, "Show draw information" }, - { "submit", ILO_DEBUG_SUBMIT, "Show batch buffer submissions" }, - { "hang", ILO_DEBUG_HANG, "Detect GPU hangs" }, - { "nohw", ILO_DEBUG_NOHW, "Do not send commands to HW" }, - { "nocache", ILO_DEBUG_NOCACHE, "Always invalidate HW caches" }, - { "nohiz", ILO_DEBUG_NOHIZ, "Disable HiZ" }, - DEBUG_NAMED_VALUE_END -}; - static float ilo_get_paramf(struct pipe_screen *screen, enum pipe_capf param) { @@ -831,7 +814,7 @@ ilo_screen_create(struct intel_winsys *ws) struct ilo_screen *is; const struct intel_winsys_info *info; - ilo_debug = debug_get_flags_option("ILO_DEBUG", ilo_debug_flags, 0); + ilo_debug_init("ILO_DEBUG"); is = CALLOC_STRUCT(ilo_screen); if (!is) |