diff options
| author | Alan Hourihane <alanh@tungstengraphics.com> | 2008-12-15 11:16:03 +0000 |
|---|---|---|
| committer | Alan Hourihane <alanh@tungstengraphics.com> | 2008-12-15 11:16:03 +0000 |
| commit | a22d865f93a1db7f72e0bfe216810f67bf4c2f2c (patch) | |
| tree | ed66dfad2f0907967e4c5e40a338b6a143b1dd7b /src/mesa/drivers/dri/intel/intel_batchbuffer.h | |
| parent | f72848a09a9d3069705fbe8e4daa29b9918ea56e (diff) | |
| parent | e72a44215312ae1f3c812ba28e47b4aec3589de9 (diff) | |
Merge commit 'origin/master' into gallium-0.2
Diffstat (limited to 'src/mesa/drivers/dri/intel/intel_batchbuffer.h')
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_batchbuffer.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.h b/src/mesa/drivers/dri/intel/intel_batchbuffer.h index 8129996979..51579df09e 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.h +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.h @@ -55,6 +55,12 @@ struct intel_batchbuffer GLuint size; + /** Tracking of BEGIN_BATCH()/OUT_BATCH()/ADVANCE_BATCH() debugging */ + struct { + GLuint total; + GLubyte *start_ptr; + } emit; + GLuint dirty_state; }; @@ -143,9 +149,12 @@ intel_batchbuffer_require_space(struct intel_batchbuffer *batch, #define BEGIN_BATCH(n, cliprect_mode) do { \ intel_batchbuffer_require_space(intel->batch, (n)*4, cliprect_mode); \ + assert(intel->batch->emit.start_ptr == NULL); \ + intel->batch->emit.total = (n) * 4; \ + intel->batch->emit.start_ptr = intel->batch->ptr; \ } while (0) -#define OUT_BATCH(d) intel_batchbuffer_emit_dword(intel->batch, d) +#define OUT_BATCH(d) intel_batchbuffer_emit_dword(intel->batch, d) #define OUT_RELOC(buf, read_domains, write_domain, delta) do { \ assert((delta) >= 0); \ @@ -153,7 +162,16 @@ intel_batchbuffer_require_space(struct intel_batchbuffer *batch, read_domains, write_domain, delta); \ } while (0) -#define ADVANCE_BATCH() do { } while(0) +#define ADVANCE_BATCH() do { \ + unsigned int _n = intel->batch->ptr - intel->batch->emit.start_ptr; \ + assert(intel->batch->emit.start_ptr != NULL); \ + if (_n != intel->batch->emit.total) { \ + fprintf(stderr, "ADVANCE_BATCH: %d of %d dwords emitted\n", \ + _n, intel->batch->emit.total); \ + abort(); \ + } \ + intel->batch->emit.start_ptr = NULL; \ +} while(0) static INLINE void |
