[Mesa-dev] [PATCH 2/6] intel: Ask libdrm to dump an AUB file if INTEL_DEBUG=aub.

Eric Anholt eric at anholt.net
Fri Mar 16 16:26:42 PDT 2012


It also asks for BMPs in the aub file at SwapBuffers time.
---
 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(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index 7b2bdad..ff721fb 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 }
 };
 
@@ -754,6 +755,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 ef024b1..7b42009 100644
--- a/src/mesa/drivers/dri/intel/intel_context.h
+++ b/src/mesa/drivers/dri/intel/intel_context.h
@@ -472,6 +472,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 48762d0..7939c4d 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -125,6 +125,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 = {
-- 
1.7.9.1



More information about the mesa-dev mailing list