From 0247d89183e26fbd07e4176ff6f8d1b4989e24ab Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 6 Mar 2012 15:31:42 -0800 Subject: intel: Ask libdrm to dump an AUB file if INTEL_DEBUG=aub. It also asks for BMPs in the aub file at SwapBuffers time. Reviewed-by: Yuanhan Liu Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/intel/intel_context.c | 4 ++++ src/mesa/drivers/dri/intel/intel_context.h | 1 + src/mesa/drivers/dri/intel/intel_screen.c | 32 ++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+) (limited to 'src/mesa') diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index d2ec0265e7c..5c857ba866b 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -477,6 +477,7 @@ static const struct dri_debug_control debug_control[] = { { "urb", DEBUG_URB }, { "vs", DEBUG_VS }, { "clip", DEBUG_CLIP }, + { "aub", DEBUG_AUB }, { NULL, 0 } }; @@ -732,6 +733,9 @@ intelInitContext(struct intel_context *intel, if (INTEL_DEBUG & DEBUG_BUFMGR) dri_bufmgr_set_debug(intel->bufmgr, true); + if (INTEL_DEBUG & DEBUG_AUB) + drm_intel_bufmgr_gem_set_aub_dump(intel->bufmgr, true); + intel_batchbuffer_init(intel); intel_fbo_init(intel); diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index 041a4fcd4e9..bfe5f9445b8 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -466,6 +466,7 @@ extern int INTEL_DEBUG; #define DEBUG_URB 0x800000 #define DEBUG_VS 0x1000000 #define DEBUG_CLIP 0x2000000 +#define DEBUG_AUB 0x4000000 #define DBG(...) do { \ if (unlikely(INTEL_DEBUG & FILE_DEBUG_FLAG)) \ diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index 229eeb1f5ad..e7c45b7d907 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -129,6 +129,38 @@ intelDRI2Flush(__DRIdrawable *drawable) if (intel->batch.used) intel_batchbuffer_flush(intel); + + if (INTEL_DEBUG & DEBUG_AUB) { + struct gl_framebuffer *fb = ctx->DrawBuffer; + + for (int i = 0; i < fb->_NumColorDrawBuffers; i++) { + struct intel_renderbuffer *irb = + intel_renderbuffer(fb->_ColorDrawBuffers[i]); + + if (irb && irb->mt) { + enum aub_dump_bmp_format format; + + switch (irb->Base.Base.Format) { + case MESA_FORMAT_ARGB8888: + case MESA_FORMAT_XRGB8888: + format = AUB_DUMP_BMP_FORMAT_ARGB_8888; + break; + default: + continue; + } + + drm_intel_gem_bo_aub_dump_bmp(irb->mt->region->bo, + irb->draw_x, + irb->draw_y, + irb->Base.Base.Width, + irb->Base.Base.Height, + format, + irb->mt->region->pitch * + irb->mt->region->cpp, + 0); + } + } + } } static const struct __DRI2flushExtensionRec intelFlushExtension = { -- cgit v1.2.3