summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmma Anholt <emma@anholt.net>2021-05-17 13:24:16 -0700
committerMarge Bot <eric+marge@anholt.net>2021-05-20 23:12:12 +0000
commit0102e7f081a46a4da785ea93384bb0ba10f247df (patch)
treecc15fdd8c6d2e339f96d90203b3ba1330211fd98
parent8509aceb7449c6ae0bbc3d35c13a05b62fd48bc1 (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.c221
-rw-r--r--src/gallium/drivers/i915/i915_debug_fp.c71
-rw-r--r--src/gallium/drivers/i915/i915_debug_private.h3
-rw-r--r--src/gallium/drivers/i915/i915_fpc_translate.c2
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
}