diff options
author | Emma Anholt <emma@anholt.net> | 2021-05-17 13:24:16 -0700 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2021-05-20 23:12:12 +0000 |
commit | 0102e7f081a46a4da785ea93384bb0ba10f247df (patch) | |
tree | cc15fdd8c6d2e339f96d90203b3ba1330211fd98 | |
parent | 8509aceb7449c6ae0bbc3d35c13a05b62fd48bc1 (diff) |
i915g: Switch batchbuffer dumping to mesa_logi().
This makes I915_DUMP_CMD=1 actually do something on non-DDEBUG builds.
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10874>
-rw-r--r-- | src/gallium/drivers/i915/i915_debug.c | 221 | ||||
-rw-r--r-- | src/gallium/drivers/i915/i915_debug_fp.c | 71 | ||||
-rw-r--r-- | src/gallium/drivers/i915/i915_debug_private.h | 3 | ||||
-rw-r--r-- | src/gallium/drivers/i915/i915_fpc_translate.c | 2 |
4 files changed, 130 insertions, 167 deletions
diff --git a/src/gallium/drivers/i915/i915_debug.c b/src/gallium/drivers/i915/i915_debug.c index 395f76a49de..a0329314b50 100644 --- a/src/gallium/drivers/i915/i915_debug.c +++ b/src/gallium/drivers/i915/i915_debug.c @@ -32,7 +32,8 @@ #include "i915_debug_private.h" #include "i915_batch.h" #include "util/u_debug.h" - +#include "util/log.h" +#include "util/ralloc.h" static const struct debug_named_value i915_debug_options[] = { @@ -66,19 +67,6 @@ void i915_debug_init(struct i915_screen *is) * Batchbuffer dumping */ -static void -PRINTF( - struct debug_stream *stream, - const char *fmt, - ... ) -{ - va_list args; - - va_start( args, fmt ); - debug_vprintf( fmt, args ); - va_end( args ); -} - static boolean debug( struct debug_stream *stream, const char *name, unsigned len ) { @@ -86,19 +74,19 @@ static boolean debug( struct debug_stream *stream, const char *name, unsigned le unsigned *ptr = (unsigned *)(stream->ptr + stream->offset); if (len == 0) { - PRINTF(stream, "Error - zero length packet (0x%08x)\n", stream->ptr[0]); + mesa_logi("Error - zero length packet (0x%08x)", stream->ptr[0]); assert(0); return FALSE; } if (stream->print_addresses) - PRINTF(stream, "%08x: ", stream->offset); + mesa_logi("%08x: ", stream->offset); - PRINTF(stream, "%s (%d dwords):\n", name, len); + mesa_logi("%s (%d dwords):", name, len); for (i = 0; i < len; i++) - PRINTF(stream, "\t0x%08x\n", ptr[i]); - PRINTF(stream, "\n"); + mesa_logi("\t0x%08x", ptr[i]); + mesa_logi("%s", ""); stream->offset += len * sizeof(unsigned); @@ -135,17 +123,16 @@ static boolean debug_prim( struct debug_stream *stream, const char *name, - PRINTF(stream, "%s %s (%d dwords):\n", name, prim, len); - PRINTF(stream, "\t0x%08x\n", ptr[0]); + mesa_logi("%s %s (%d dwords):", name, prim, len); + mesa_logi("\t0x%08x", ptr[0]); for (i = 1; i < len; i++) { if (dump_floats) - PRINTF(stream, "\t0x%08x // %f\n", ptr[i], *(float *)&ptr[i]); + mesa_logi("\t0x%08x // %f", ptr[i], *(float *)&ptr[i]); else - PRINTF(stream, "\t0x%08x\n", ptr[i]); + mesa_logi("\t0x%08x", ptr[i]); } - - PRINTF(stream, "\n"); + mesa_logi("%s", ""); stream->offset += len * sizeof(unsigned); @@ -160,16 +147,16 @@ static boolean debug_program( struct debug_stream *stream, const char *name, uns unsigned *ptr = (unsigned *)(stream->ptr + stream->offset); if (len == 0) { - PRINTF(stream, "Error - zero length packet (0x%08x)\n", stream->ptr[0]); + mesa_logi("Error - zero length packet (0x%08x)", stream->ptr[0]); assert(0); return FALSE; } if (stream->print_addresses) - PRINTF(stream, "%08x: ", stream->offset); + mesa_logi("%08x: ", stream->offset); - PRINTF(stream, "%s (%d dwords):\n", name, len); - i915_disassemble_program( stream, ptr, len ); + mesa_logi("%s (%d dwords):", name, len); + i915_disassemble_program( ptr, len ); stream->offset += len * sizeof(unsigned); return TRUE; @@ -182,17 +169,17 @@ static boolean debug_chain( struct debug_stream *stream, const char *name, unsig unsigned old_offset = stream->offset + len * sizeof(unsigned); unsigned i; - PRINTF(stream, "%s (%d dwords):\n", name, len); + mesa_logi("%s (%d dwords):", name, len); for (i = 0; i < len; i++) - PRINTF(stream, "\t0x%08x\n", ptr[i]); + mesa_logi("\t0x%08x", ptr[i]); stream->offset = ptr[1] & ~0x3; if (stream->offset < old_offset) - PRINTF(stream, "\n... skipping backwards from 0x%x --> 0x%x ...\n\n", + mesa_logi("... skipping backwards from 0x%x --> 0x%x ...", old_offset, stream->offset ); else - PRINTF(stream, "\n... skipping from 0x%x --> 0x%x ...\n\n", + mesa_logi("... skipping from 0x%x --> 0x%x ...", old_offset, stream->offset ); @@ -212,10 +199,10 @@ static boolean debug_variable_length_prim( struct debug_stream *stream ) len = 1+(i+2)/2; - PRINTF(stream, "3DPRIM, %s variable length %d indicies (%d dwords):\n", prim, i, len); + mesa_logi("3DPRIM, %s variable length %d indicies (%d dwords):", prim, i, len); for (i = 0; i < len; i++) - PRINTF(stream, "\t0x%08x\n", ptr[i]); - PRINTF(stream, "\n"); + mesa_logi("\t0x%08x", ptr[i]); + mesa_logi("%s", ""); stream->offset += len * sizeof(unsigned); return TRUE; @@ -234,16 +221,15 @@ BITS( va_list args; unsigned himask = 0xFFFFFFFFUL >> (31 - (hi)); - PRINTF(stream, "\t\t "); - va_start( args, fmt ); - debug_vprintf( fmt, args ); + char *out = ralloc_vasprintf(NULL, fmt, args); va_end( args ); - PRINTF(stream, ": 0x%x\n", ((dw) & himask) >> (lo)); + mesa_logi("\t\t %s : 0x%x", out, ((dw)&himask) >> (lo)); + + ralloc_free(out); } -#ifdef DEBUG #define MBZ( dw, hi, lo) do { \ unsigned x = (dw) >> (lo); \ unsigned lomask = (1 << (lo)) - 1; \ @@ -251,10 +237,6 @@ BITS( himask = (1UL << (hi)) - 1; \ assert ((x & himask & ~lomask) == 0); \ } while (0) -#else -#define MBZ( dw, hi, lo) do { \ -} while (0) -#endif static void FLAG( @@ -265,15 +247,14 @@ FLAG( ... ) { if (((dw) >> (bit)) & 1) { - va_list args; - - PRINTF(stream, "\t\t "); - + va_list args; va_start( args, fmt ); - debug_vprintf( fmt, args ); + char *out = ralloc_vasprintf(NULL, fmt, args); va_end( args ); - PRINTF(stream, "\n"); + mesa_logi("\t\t %s", out); + + ralloc_free(out); } } @@ -285,17 +266,17 @@ static boolean debug_load_immediate( struct debug_stream *stream, unsigned bits = (ptr[0] >> 4) & 0xff; unsigned j = 0; - PRINTF(stream, "%s (%d dwords, flags: %x):\n", name, len, bits); - PRINTF(stream, "\t0x%08x\n", ptr[j++]); + mesa_logi("%s (%d dwords, flags: %x):", name, len, bits); + mesa_logi("\t0x%08x", ptr[j++]); if (bits & (1<<0)) { - PRINTF(stream, "\t LIS0: 0x%08x\n", ptr[j]); - PRINTF(stream, "\t vb address: 0x%08x\n", (ptr[j] & ~0x3)); + mesa_logi("\t LIS0: 0x%08x", ptr[j]); + mesa_logi("\t vb address: 0x%08x", (ptr[j] & ~0x3)); BITS(stream, ptr[j], 0, 0, "vb invalidate disable"); j++; } if (bits & (1<<1)) { - PRINTF(stream, "\t LIS1: 0x%08x\n", ptr[j]); + mesa_logi("\t LIS1: 0x%08x", ptr[j]); BITS(stream, ptr[j], 29, 24, "vb dword width"); BITS(stream, ptr[j], 21, 16, "vb dword pitch"); BITS(stream, ptr[j], 15, 0, "vb max index"); @@ -303,7 +284,7 @@ static boolean debug_load_immediate( struct debug_stream *stream, } if (bits & (1<<2)) { int i; - PRINTF(stream, "\t LIS2: 0x%08x\n", ptr[j]); + mesa_logi("\t LIS2: 0x%08x", ptr[j]); for (i = 0; i < 8; i++) { unsigned tc = (ptr[j] >> (i * 4)) & 0xf; if (tc != 0xf) @@ -312,11 +293,11 @@ static boolean debug_load_immediate( struct debug_stream *stream, j++; } if (bits & (1<<3)) { - PRINTF(stream, "\t LIS3: 0x%08x\n", ptr[j]); + mesa_logi("\t LIS3: 0x%08x", ptr[j]); j++; } if (bits & (1<<4)) { - PRINTF(stream, "\t LIS4: 0x%08x\n", ptr[j]); + mesa_logi("\t LIS4: 0x%08x", ptr[j]); BITS(stream, ptr[j], 31, 23, "point width"); BITS(stream, ptr[j], 22, 19, "line width"); FLAG(stream, ptr[j], 18, "alpha flatshade"); @@ -338,7 +319,7 @@ static boolean debug_load_immediate( struct debug_stream *stream, j++; } if (bits & (1<<5)) { - PRINTF(stream, "\t LIS5: 0x%08x\n", ptr[j]); + mesa_logi("\t LIS5: 0x%08x", ptr[j]); BITS(stream, ptr[j], 31, 28, "rgba write disables"); FLAG(stream, ptr[j], 27, "force dflt point width"); FLAG(stream, ptr[j], 26, "last pixel enable"); @@ -356,7 +337,7 @@ static boolean debug_load_immediate( struct debug_stream *stream, j++; } if (bits & (1<<6)) { - PRINTF(stream, "\t LIS6: 0x%08x\n", ptr[j]); + mesa_logi("\t LIS6: 0x%08x", ptr[j]); FLAG(stream, ptr[j], 31, "alpha test enable"); BITS(stream, ptr[j], 30, 28, "alpha func"); BITS(stream, ptr[j], 27, 20, "alpha ref"); @@ -373,7 +354,7 @@ static boolean debug_load_immediate( struct debug_stream *stream, } - PRINTF(stream, "\n"); + mesa_logi("%s", ""); assert(j == len); @@ -392,34 +373,34 @@ static boolean debug_load_indirect( struct debug_stream *stream, unsigned bits = (ptr[0] >> 8) & 0x3f; unsigned i, j = 0; - PRINTF(stream, "%s (%d dwords):\n", name, len); - PRINTF(stream, "\t0x%08x\n", ptr[j++]); + mesa_logi("%s (%d dwords):", name, len); + mesa_logi("\t0x%08x", ptr[j++]); for (i = 0; i < 6; i++) { if (bits & (1<<i)) { switch (1<<(8+i)) { case LI0_STATE_STATIC_INDIRECT: - PRINTF(stream, " STATIC: 0x%08x | %x\n", ptr[j]&~3, ptr[j]&3); j++; - PRINTF(stream, " 0x%08x\n", ptr[j++]); + mesa_logi(" STATIC: 0x%08x | %x", ptr[j]&~3, ptr[j]&3); j++; + mesa_logi(" 0x%08x", ptr[j++]); break; case LI0_STATE_DYNAMIC_INDIRECT: - PRINTF(stream, " DYNAMIC: 0x%08x | %x\n", ptr[j]&~3, ptr[j]&3); j++; + mesa_logi(" DYNAMIC: 0x%08x | %x", ptr[j]&~3, ptr[j]&3); j++; break; case LI0_STATE_SAMPLER: - PRINTF(stream, " SAMPLER: 0x%08x | %x\n", ptr[j]&~3, ptr[j]&3); j++; - PRINTF(stream, " 0x%08x\n", ptr[j++]); + mesa_logi(" SAMPLER: 0x%08x | %x", ptr[j]&~3, ptr[j]&3); j++; + mesa_logi(" 0x%08x", ptr[j++]); break; case LI0_STATE_MAP: - PRINTF(stream, " MAP: 0x%08x | %x\n", ptr[j]&~3, ptr[j]&3); j++; - PRINTF(stream, " 0x%08x\n", ptr[j++]); + mesa_logi(" MAP: 0x%08x | %x", ptr[j]&~3, ptr[j]&3); j++; + mesa_logi(" 0x%08x", ptr[j++]); break; case LI0_STATE_PROGRAM: - PRINTF(stream, " PROGRAM: 0x%08x | %x\n", ptr[j]&~3, ptr[j]&3); j++; - PRINTF(stream, " 0x%08x\n", ptr[j++]); + mesa_logi(" PROGRAM: 0x%08x | %x", ptr[j]&~3, ptr[j]&3); j++; + mesa_logi(" 0x%08x", ptr[j++]); break; case LI0_STATE_CONSTANTS: - PRINTF(stream, " CONSTANTS: 0x%08x | %x\n", ptr[j]&~3, ptr[j]&3); j++; - PRINTF(stream, " 0x%08x\n", ptr[j++]); + mesa_logi(" CONSTANTS: 0x%08x | %x", ptr[j]&~3, ptr[j]&3); j++; + mesa_logi(" 0x%08x", ptr[j++]); break; default: assert(0); @@ -429,10 +410,10 @@ static boolean debug_load_indirect( struct debug_stream *stream, } if (bits == 0) { - PRINTF(stream, "\t DUMMY: 0x%08x\n", ptr[j++]); + mesa_logi("\t DUMMY: 0x%08x", ptr[j++]); } - PRINTF(stream, "\n"); + mesa_logi("%s", ""); assert(j == len); @@ -445,7 +426,7 @@ static boolean debug_load_indirect( struct debug_stream *stream, static void BR13( struct debug_stream *stream, unsigned val ) { - PRINTF(stream, "\t0x%08x\n", val); + mesa_logi("\t0x%08x", val); FLAG(stream, val, 30, "clipping enable"); BITS(stream, val, 25, 24, "color depth (3==32bpp)"); BITS(stream, val, 23, 16, "raster op"); @@ -456,7 +437,7 @@ static void BR13( struct debug_stream *stream, static void BR22( struct debug_stream *stream, unsigned val ) { - PRINTF(stream, "\t0x%08x\n", val); + mesa_logi("\t0x%08x", val); BITS(stream, val, 31, 16, "dest y1"); BITS(stream, val, 15, 0, "dest x1"); } @@ -464,7 +445,7 @@ static void BR22( struct debug_stream *stream, static void BR23( struct debug_stream *stream, unsigned val ) { - PRINTF(stream, "\t0x%08x\n", val); + mesa_logi("\t0x%08x", val); BITS(stream, val, 31, 16, "dest y2"); BITS(stream, val, 15, 0, "dest x2"); } @@ -472,13 +453,13 @@ static void BR23( struct debug_stream *stream, static void BR09( struct debug_stream *stream, unsigned val ) { - PRINTF(stream, "\t0x%08x -- dest address\n", val); + mesa_logi("\t0x%08x -- dest address", val); } static void BR26( struct debug_stream *stream, unsigned val ) { - PRINTF(stream, "\t0x%08x\n", val); + mesa_logi("\t0x%08x", val); BITS(stream, val, 31, 16, "src y1"); BITS(stream, val, 15, 0, "src x1"); } @@ -486,20 +467,20 @@ static void BR26( struct debug_stream *stream, static void BR11( struct debug_stream *stream, unsigned val ) { - PRINTF(stream, "\t0x%08x\n", val); + mesa_logi("\t0x%08x", val); BITS(stream, val, 15, 0, "src pitch"); } static void BR12( struct debug_stream *stream, unsigned val ) { - PRINTF(stream, "\t0x%08x -- src address\n", val); + mesa_logi("\t0x%08x -- src address", val); } static void BR16( struct debug_stream *stream, unsigned val ) { - PRINTF(stream, "\t0x%08x -- color\n", val); + mesa_logi("\t0x%08x -- color", val); } static boolean debug_copy_blit( struct debug_stream *stream, @@ -509,8 +490,8 @@ static boolean debug_copy_blit( struct debug_stream *stream, unsigned *ptr = (unsigned *)(stream->ptr + stream->offset); int j = 0; - PRINTF(stream, "%s (%d dwords):\n", name, len); - PRINTF(stream, "\t0x%08x\n", ptr[j++]); + mesa_logi("%s (%d dwords):", name, len); + mesa_logi("\t0x%08x", ptr[j++]); BR13(stream, ptr[j++]); BR22(stream, ptr[j++]); @@ -532,8 +513,8 @@ static boolean debug_color_blit( struct debug_stream *stream, unsigned *ptr = (unsigned *)(stream->ptr + stream->offset); int j = 0; - PRINTF(stream, "%s (%d dwords):\n", name, len); - PRINTF(stream, "\t0x%08x\n", ptr[j++]); + mesa_logi("%s (%d dwords):", name, len); + mesa_logi("\t0x%08x", ptr[j++]); BR13(stream, ptr[j++]); BR22(stream, ptr[j++]); @@ -553,8 +534,8 @@ static boolean debug_modes4( struct debug_stream *stream, unsigned *ptr = (unsigned *)(stream->ptr + stream->offset); int j = 0; - PRINTF(stream, "%s (%d dwords):\n", name, len); - PRINTF(stream, "\t0x%08x\n", ptr[j]); + mesa_logi("%s (%d dwords):", name, len); + mesa_logi("\t0x%08x", ptr[j]); BITS(stream, ptr[j], 21, 18, "logicop func"); FLAG(stream, ptr[j], 17, "stencil test mask modify-enable"); FLAG(stream, ptr[j], 16, "stencil write mask modify-enable"); @@ -574,26 +555,26 @@ static boolean debug_map_state( struct debug_stream *stream, unsigned *ptr = (unsigned *)(stream->ptr + stream->offset); unsigned j = 0; - PRINTF(stream, "%s (%d dwords):\n", name, len); - PRINTF(stream, "\t0x%08x\n", ptr[j++]); + mesa_logi("%s (%d dwords):", name, len); + mesa_logi("\t0x%08x", ptr[j++]); { - PRINTF(stream, "\t0x%08x\n", ptr[j]); + mesa_logi("\t0x%08x", ptr[j]); BITS(stream, ptr[j], 15, 0, "map mask"); j++; } while (j < len) { { - PRINTF(stream, "\t TMn.0: 0x%08x\n", ptr[j]); - PRINTF(stream, "\t map address: 0x%08x\n", (ptr[j] & ~0x3)); + mesa_logi("\t TMn.0: 0x%08x", ptr[j]); + mesa_logi("\t map address: 0x%08x", (ptr[j] & ~0x3)); FLAG(stream, ptr[j], 1, "vertical line stride"); FLAG(stream, ptr[j], 0, "vertical line stride offset"); j++; } { - PRINTF(stream, "\t TMn.1: 0x%08x\n", ptr[j]); + mesa_logi("\t TMn.1: 0x%08x", ptr[j]); BITS(stream, ptr[j], 31, 21, "height"); BITS(stream, ptr[j], 20, 10, "width"); BITS(stream, ptr[j], 9, 7, "surface format"); @@ -604,7 +585,7 @@ static boolean debug_map_state( struct debug_stream *stream, j++; } { - PRINTF(stream, "\t TMn.2: 0x%08x\n", ptr[j]); + mesa_logi("\t TMn.2: 0x%08x", ptr[j]); BITS(stream, ptr[j], 31, 21, "dword pitch"); BITS(stream, ptr[j], 20, 15, "cube face enables"); BITS(stream, ptr[j], 14, 9, "max lod"); @@ -626,18 +607,18 @@ static boolean debug_sampler_state( struct debug_stream *stream, unsigned *ptr = (unsigned *)(stream->ptr + stream->offset); unsigned j = 0; - PRINTF(stream, "%s (%d dwords):\n", name, len); - PRINTF(stream, "\t0x%08x\n", ptr[j++]); + mesa_logi("%s (%d dwords):", name, len); + mesa_logi("\t0x%08x", ptr[j++]); { - PRINTF(stream, "\t0x%08x\n", ptr[j]); + mesa_logi("\t0x%08x", ptr[j]); BITS(stream, ptr[j], 15, 0, "sampler mask"); j++; } while (j < len) { { - PRINTF(stream, "\t TSn.0: 0x%08x\n", ptr[j]); + mesa_logi("\t TSn.0: 0x%08x", ptr[j]); FLAG(stream, ptr[j], 31, "reverse gamma"); FLAG(stream, ptr[j], 30, "planar to packed"); FLAG(stream, ptr[j], 29, "yuv->rgb"); @@ -654,7 +635,7 @@ static boolean debug_sampler_state( struct debug_stream *stream, } { - PRINTF(stream, "\t TSn.1: 0x%08x\n", ptr[j]); + mesa_logi("\t TSn.1: 0x%08x", ptr[j]); BITS(stream, ptr[j], 31, 24, "min lod"); MBZ( ptr[j], 23, 18 ); FLAG(stream, ptr[j], 17, "kill pixel enable"); @@ -669,7 +650,7 @@ static boolean debug_sampler_state( struct debug_stream *stream, j++; } { - PRINTF(stream, "\t TSn.2: 0x%08x (default color)\n", ptr[j]); + mesa_logi("\t TSn.2: 0x%08x (default color)", ptr[j]); j++; } } @@ -686,11 +667,11 @@ static boolean debug_dest_vars( struct debug_stream *stream, unsigned *ptr = (unsigned *)(stream->ptr + stream->offset); int j = 0; - PRINTF(stream, "%s (%d dwords):\n", name, len); - PRINTF(stream, "\t0x%08x\n", ptr[j++]); + mesa_logi("%s (%d dwords):", name, len); + mesa_logi("\t0x%08x", ptr[j++]); { - PRINTF(stream, "\t0x%08x\n", ptr[j]); + mesa_logi("\t0x%08x", ptr[j]); FLAG(stream, ptr[j], 31, "early classic ztest"); FLAG(stream, ptr[j], 30, "opengl tex default color"); FLAG(stream, ptr[j], 29, "bypass iz"); @@ -721,11 +702,11 @@ static boolean debug_buf_info( struct debug_stream *stream, unsigned *ptr = (unsigned *)(stream->ptr + stream->offset); int j = 0; - PRINTF(stream, "%s (%d dwords):\n", name, len); - PRINTF(stream, "\t0x%08x\n", ptr[j++]); + mesa_logi("%s (%d dwords):", name, len); + mesa_logi("\t0x%08x", ptr[j++]); { - PRINTF(stream, "\t0x%08x\n", ptr[j]); + mesa_logi("\t0x%08x", ptr[j]); BITS(stream, ptr[j], 28, 28, "aux buffer id"); BITS(stream, ptr[j], 27, 24, "buffer id (7=depth, 3=back)"); FLAG(stream, ptr[j], 23, "use fence regs"); @@ -737,7 +718,7 @@ static boolean debug_buf_info( struct debug_stream *stream, j++; } - PRINTF(stream, "\t0x%08x -- buffer base address\n", ptr[j++]); + mesa_logi("\t0x%08x -- buffer base address", ptr[j++]); stream->offset += len * sizeof(unsigned); assert(j == len); @@ -910,11 +891,11 @@ i915_dump_batchbuffer( struct i915_winsys_batchbuffer *batch ) stream.print_addresses = 0; if (!start || !end) { - debug_printf( "\n\nBATCH: ???\n"); + mesa_logi( "BATCH: ???"); return; } - debug_printf( "\n\nBATCH: (%d)\n", (int)bytes / 4); + mesa_logi( "BATCH: (%d)", (int)bytes / 4); while (!done && stream.offset < bytes) @@ -925,7 +906,7 @@ i915_dump_batchbuffer( struct i915_winsys_batchbuffer *batch ) assert(stream.offset <= bytes); } - debug_printf( "END-BATCH\n\n\n"); + mesa_logi( "END-BATCH"); } @@ -961,11 +942,11 @@ i915_dump_dirty(struct i915_context *i915, const char *func) }; int i; - debug_printf("%s: ", func); + mesa_logi("%s: ", func); for (i = 0; l[i].name; i++) if (i915->dirty & l[i].dirty) - debug_printf("%s ", l[i].name); - debug_printf("\n"); + mesa_logi("%s ", l[i].name); + mesa_logi("%s", ""); } void @@ -987,9 +968,9 @@ i915_dump_hardware_dirty(struct i915_context *i915, const char *func) }; int i; - debug_printf("%s: ", func); + mesa_logi("%s: ", func); for (i = 0; l[i].name; i++) if (i915->hardware_dirty & l[i].dirty) - debug_printf("%s ", l[i].name); - debug_printf("\n"); + mesa_logi("%s ", l[i].name); + mesa_logi("%s", ""); } diff --git a/src/gallium/drivers/i915/i915_debug_fp.c b/src/gallium/drivers/i915/i915_debug_fp.c index c4ffade0843..2dd9df3ac15 100644 --- a/src/gallium/drivers/i915/i915_debug_fp.c +++ b/src/gallium/drivers/i915/i915_debug_fp.c @@ -29,22 +29,11 @@ #include "i915_reg.h" #include "i915_debug.h" #include "i915_debug_private.h" +#include "util/log.h" #include "util/u_debug.h" +#include "util/ralloc.h" - -static void -PRINTF( - struct debug_stream *stream, - const char *fmt, - ... ) -{ - va_list args; - - va_start( args, fmt ); - debug_vprintf( fmt, args ); - va_end( args ); -} - +#define PRINTF ralloc_asprintf_append static const char *opcodes[0x20] = { "NOP", @@ -130,7 +119,7 @@ static const char *regname[0x8] = { }; static void -print_reg_type_nr(struct debug_stream *stream, unsigned type, unsigned nr) +print_reg_type_nr(char **stream, unsigned type, unsigned nr) { switch (type) { case REG_TYPE_T: @@ -177,7 +166,7 @@ print_reg_type_nr(struct debug_stream *stream, unsigned type, unsigned nr) static void -print_reg_neg_swizzle(struct debug_stream *stream, unsigned reg) +print_reg_neg_swizzle(char **stream, unsigned reg) { int i; @@ -219,7 +208,7 @@ print_reg_neg_swizzle(struct debug_stream *stream, unsigned reg) static void -print_src_reg(struct debug_stream *stream, unsigned dword) +print_src_reg(char **stream, unsigned dword) { unsigned nr = (dword >> A2_SRC2_NR_SHIFT) & REG_NR_MASK; unsigned type = (dword >> A2_SRC2_TYPE_SHIFT) & REG_TYPE_MASK; @@ -229,7 +218,7 @@ print_src_reg(struct debug_stream *stream, unsigned dword) static void -print_dest_reg(struct debug_stream *stream, unsigned dword) +print_dest_reg(char **stream, unsigned dword) { unsigned nr = (dword >> A0_DEST_NR_SHIFT) & REG_NR_MASK; unsigned type = (dword >> A0_DEST_TYPE_SHIFT) & REG_TYPE_MASK; @@ -254,7 +243,7 @@ print_dest_reg(struct debug_stream *stream, unsigned dword) static void -print_arith_op(struct debug_stream *stream, +print_arith_op(char **stream, unsigned opcode, const unsigned * program) { if (opcode != A0_NOP) { @@ -268,27 +257,22 @@ print_arith_op(struct debug_stream *stream, PRINTF(stream, "%s ", opcodes[opcode]); print_src_reg(stream, GET_SRC0_REG(program[0], program[1])); - if (args[opcode] == 1) { - PRINTF(stream, "\n"); + if (args[opcode] == 1) return; - } PRINTF(stream, ", "); print_src_reg(stream, GET_SRC1_REG(program[1], program[2])); - if (args[opcode] == 2) { - PRINTF(stream, "\n"); + if (args[opcode] == 2) return; - } PRINTF(stream, ", "); print_src_reg(stream, GET_SRC2_REG(program[2])); - PRINTF(stream, "\n"); return; } static void -print_tex_op(struct debug_stream *stream, +print_tex_op(char **stream, unsigned opcode, const unsigned * program) { print_dest_reg(stream, program[0] | A0_DEST_CHANNEL_ALL); @@ -302,11 +286,10 @@ print_tex_op(struct debug_stream *stream, (program[1] >> T1_ADDRESS_REG_TYPE_SHIFT) & REG_TYPE_MASK, (program[1] >> T1_ADDRESS_REG_NR_SHIFT) & REG_NR_MASK); - PRINTF(stream, "\n"); } static void -print_texkil_op(struct debug_stream *stream, +print_texkil_op(char **stream, unsigned opcode, const unsigned * program) { PRINTF(stream, "TEXKIL "); @@ -315,48 +298,48 @@ print_texkil_op(struct debug_stream *stream, (program[1] >> T1_ADDRESS_REG_TYPE_SHIFT) & REG_TYPE_MASK, (program[1] >> T1_ADDRESS_REG_NR_SHIFT) & REG_NR_MASK); - PRINTF(stream, "\n"); } static void -print_dcl_op(struct debug_stream *stream, +print_dcl_op(char **stream, unsigned opcode, const unsigned * program) { PRINTF(stream, "%s ", opcodes[opcode]); print_dest_reg(stream, program[0] | A0_DEST_CHANNEL_ALL); - PRINTF(stream, "\n"); } void -i915_disassemble_program(struct debug_stream *stream, - const unsigned * program, unsigned sz) +i915_disassemble_program(const unsigned * program, unsigned sz) { unsigned i; - PRINTF(stream, "\t\tBEGIN\n"); + mesa_logi("\t\tBEGIN"); assert((program[0] & 0x1ff) + 2 == sz); for (i = 1; i < sz; i += 3, program += 3) { unsigned opcode = program[0] & (0x1f << 24); - PRINTF(stream, "\t\t"); - - if ((int) opcode >= A0_NOP && opcode <= A0_SLT) - print_arith_op(stream, opcode >> 24, program); + char *stream = ralloc_strdup(NULL, ""); + if ((int)opcode >= A0_NOP && opcode <= A0_SLT) + print_arith_op(&stream, opcode >> 24, program); else if (opcode >= T0_TEXLD && opcode < T0_TEXKILL) - print_tex_op(stream, opcode >> 24, program); + print_tex_op(&stream, opcode >> 24, program); else if (opcode == T0_TEXKILL) - print_texkil_op(stream, opcode >> 24, program); + print_texkil_op(&stream, opcode >> 24, program); else if (opcode == D0_DCL) - print_dcl_op(stream, opcode >> 24, program); + print_dcl_op(&stream, opcode >> 24, program); else - PRINTF(stream, "Unknown opcode 0x%x\n", opcode); + ralloc_asprintf_append(&stream, "\t\t Unknown opcode 0x%x\n", opcode); + + mesa_logi("\t\t %s ", stream); + ralloc_free(stream); } - PRINTF(stream, "\t\tEND\n\n"); + mesa_logi("\t\tEND"); + mesa_logi("\t\t"); } diff --git a/src/gallium/drivers/i915/i915_debug_private.h b/src/gallium/drivers/i915/i915_debug_private.h index f8d4285ba99..8bb5478a64b 100644 --- a/src/gallium/drivers/i915/i915_debug_private.h +++ b/src/gallium/drivers/i915/i915_debug_private.h @@ -39,7 +39,6 @@ struct debug_stream unsigned print_addresses; }; -void i915_disassemble_program(struct debug_stream *stream, - const unsigned *program, unsigned sz); +void i915_disassemble_program(const unsigned *program, unsigned sz); #endif diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c b/src/gallium/drivers/i915/i915_fpc_translate.c index 34f29935cd1..85415b45167 100644 --- a/src/gallium/drivers/i915/i915_fpc_translate.c +++ b/src/gallium/drivers/i915/i915_fpc_translate.c @@ -1234,6 +1234,6 @@ i915_translate_fragment_program( struct i915_context *i915, i915_optimize_free(i_tokens); #if 0 - i915_disassemble_program(NULL, fs->program, fs->program_len); + i915_disassemble_program(fs->program, fs->program_len); #endif } |