summaryrefslogtreecommitdiff
path: root/src/mesa
diff options
context:
space:
mode:
authorJosé Fonseca <jrfonseca@tungstengraphics.com>2007-11-03 02:00:28 +0000
committerJosé Fonseca <jrfonseca@tungstengraphics.com>2007-11-03 02:01:32 +0000
commit7a7899a2476592e846b908a557a738a49fa9a948 (patch)
tree58a2d2f5ef1a02d1e916e749d445f4617abe7aa0 /src/mesa
parent5fa6ea68586e906a984291dd4c20f664924157eb (diff)
Allow batch buffer debugging without calling i915_winsys->batch_start so often.
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/pipe/i915simple/i915_batch.h10
-rw-r--r--src/mesa/pipe/i915simple/i915_context.c2
-rw-r--r--src/mesa/pipe/i915simple/i915_debug.c12
-rw-r--r--src/mesa/pipe/i915simple/i915_debug.h4
4 files changed, 15 insertions, 13 deletions
diff --git a/src/mesa/pipe/i915simple/i915_batch.h b/src/mesa/pipe/i915simple/i915_batch.h
index d0b0946cdf..fb88cd6db0 100644
--- a/src/mesa/pipe/i915simple/i915_batch.h
+++ b/src/mesa/pipe/i915simple/i915_batch.h
@@ -34,7 +34,7 @@
#define BATCH_LOCALS
#define BEGIN_BATCH( dwords, relocs ) \
- i915->winsys->batch_start( i915->winsys, dwords, relocs )
+ (i915->batch_start = i915->winsys->batch_start( i915->winsys, dwords, relocs ))
#define OUT_BATCH( dword ) \
i915->winsys->batch_dword( i915->winsys, dword )
@@ -44,10 +44,10 @@
#define ADVANCE_BATCH()
-#define FLUSH_BATCH() do { \
- if (0) i915_dump_batchbuffer( i915, i915->batch_start, BEGIN_BATCH(0, 0) ); \
- i915->winsys->batch_flush( i915->winsys ); \
- i915->batch_start = BEGIN_BATCH(0, 0); \
+#define FLUSH_BATCH() do { \
+ if (0) i915_dump_batchbuffer( i915 ); \
+ i915->winsys->batch_flush( i915->winsys ); \
+ i915->batch_start = NULL; \
i915->hardware_dirty = ~0; \
} while (0)
diff --git a/src/mesa/pipe/i915simple/i915_context.c b/src/mesa/pipe/i915simple/i915_context.c
index fc878c175c..2c36a194c7 100644
--- a/src/mesa/pipe/i915simple/i915_context.c
+++ b/src/mesa/pipe/i915simple/i915_context.c
@@ -347,7 +347,7 @@ struct pipe_context *i915_create( struct pipe_winsys *pipe_winsys,
/* Batch stream debugging is a bit hacked up at the moment:
*/
- i915->batch_start = BEGIN_BATCH(0, 0);
+ i915->batch_start = NULL;
/*
* XXX we could plug GL selection/feedback into the drawing pipeline
diff --git a/src/mesa/pipe/i915simple/i915_debug.c b/src/mesa/pipe/i915simple/i915_debug.c
index d142194d84..d07d2f1fa9 100644
--- a/src/mesa/pipe/i915simple/i915_debug.c
+++ b/src/mesa/pipe/i915simple/i915_debug.c
@@ -822,20 +822,24 @@ static boolean i915_debug_packet( struct debug_stream *stream )
void
-i915_dump_batchbuffer( struct i915_context *i915,
- unsigned *start,
- unsigned *end )
+i915_dump_batchbuffer( struct i915_context *i915 )
{
struct debug_stream stream;
+ unsigned *start = i915->batch_start;
+ unsigned *end = i915->winsys->batch_start( i915->winsys, 0, 0 );
unsigned bytes = (end - start) * 4;
boolean done = FALSE;
-
stream.offset = 0;
stream.ptr = (char *)start;
stream.print_addresses = 0;
stream.winsys = i915->pipe.winsys;
+ if (!start || !end) {
+ stream.winsys->printf( stream.winsys, "\n\nBATCH: ???\n");
+ return;
+ }
+
stream.winsys->printf( stream.winsys, "\n\nBATCH: (%d)\n", bytes / 4);
while (!done &&
diff --git a/src/mesa/pipe/i915simple/i915_debug.h b/src/mesa/pipe/i915simple/i915_debug.h
index 0ea131171e..4c3aa64b42 100644
--- a/src/mesa/pipe/i915simple/i915_debug.h
+++ b/src/mesa/pipe/i915simple/i915_debug.h
@@ -79,9 +79,7 @@ void i915_print_ureg(const char *msg, unsigned ureg);
#endif
-void i915_dump_batchbuffer( struct i915_context *i915,
- unsigned *start,
- unsigned *end );
+void i915_dump_batchbuffer( struct i915_context *i915 );