i915g: add raw batchbuffer dumping in drm winsys
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 27 Feb 2011 15:32:38 +0000 (16:32 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 27 Feb 2011 15:32:38 +0000 (16:32 +0100)
These files can be decoded with intel_dump_decode from the intel-gpu-tools
available at:

http://cgit.freedesktop.org/xorg/app/intel-gpu-tools/

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
src/gallium/winsys/i915/drm/i915_drm_batchbuffer.c
src/gallium/winsys/i915/drm/i915_drm_winsys.c
src/gallium/winsys/i915/drm/i915_drm_winsys.h

index afeab5eef42b07fe902cfa91c45767b59250582d..54b2d7af2eb184da080462b2e419bd735804f3d8 100644 (file)
@@ -5,6 +5,7 @@
 #include "i915_drm.h"
 #include "i915/i915_debug.h"
 #include <xf86drm.h>
+#include <stdio.h>
 
 #define BATCH_RESERVED 16
 
@@ -169,6 +170,14 @@ i915_drm_batchbuffer_flush(struct i915_winsys_batchbuffer *ibatch,
       assert(ret == 0);
    }
 
+   if (i915_drm_winsys(ibatch->iws)->dump_raw_file) {
+      FILE *file = fopen(i915_drm_winsys(ibatch->iws)->dump_raw_file, "a");
+      if (file) {
+        fwrite(batch->base.map, used, 1, file);
+        fclose(file);
+      }
+   }
+
 #ifdef INTEL_RUN_SYNC
    drm_intel_bo_wait_rendering(batch->bo);
 #endif
index 2288b48b2bde84cf557e565129afead87ba69889..2c3b508d0567fe6b813e2f61362b8bb80224f54b 100644 (file)
@@ -72,6 +72,7 @@ i915_drm_winsys_create(int drmFD)
    drm_intel_bufmgr_gem_enable_fenced_relocs(idws->gem_manager);
 
    idws->dump_cmd = debug_get_bool_option("I915_DUMP_CMD", FALSE);
+   idws->dump_raw_file = debug_get_option("I915_DUMP_RAW_FILE", NULL);
    idws->send_cmd = !debug_get_bool_option("I915_NO_HW", FALSE);
 
    return &idws->base;
index 0d74d0270c7951b77370f3f3b744ae2d63eb078a..dae53c3e801e42e9cb91d1a3a53d2ee4f50ef0f5 100644 (file)
@@ -18,6 +18,7 @@ struct i915_drm_winsys
    struct i915_winsys base;
 
    boolean dump_cmd;
+   char *dump_raw_file;
    boolean send_cmd;
 
    int fd; /**< Drm file discriptor */