intel/dump_gpu: add an only-capture option

This option allows for smaller aub files to be generated by only
storing the BOs flagged with EXEC_OBJECT_CAPTURE.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2201>
This commit is contained in:
Lionel Landwerlin 2019-10-04 00:55:43 +03:00 committed by Marge Bot
parent f0e13827aa
commit 22b512ea5b
2 changed files with 19 additions and 1 deletions

View File

@ -59,6 +59,7 @@ static char *output_filename = NULL;
static FILE *output_file = NULL; static FILE *output_file = NULL;
static int verbose = 0; static int verbose = 0;
static bool device_override = false; static bool device_override = false;
static bool capture_only = false;
#define MAX_FD_COUNT 64 #define MAX_FD_COUNT 64
#define MAX_BO_COUNT 64 * 1024 #define MAX_BO_COUNT 64 * 1024
@ -293,7 +294,9 @@ dump_execbuffer2(int fd, struct drm_i915_gem_execbuffer2 *execbuffer2)
else else
data = bo->map; data = bo->map;
if (bo->dirty) { bool write = !capture_only || (obj->flags & EXEC_OBJECT_CAPTURE);
if (write && bo->dirty) {
if (bo == batch_bo) { if (bo == batch_bo) {
aub_write_trace_block(&aub_file, AUB_TRACE_TYPE_BATCH, aub_write_trace_block(&aub_file, AUB_TRACE_TYPE_BATCH,
GET_PTR(data), bo->size, bo->offset); GET_PTR(data), bo->size, bo->offset);
@ -420,6 +423,8 @@ maybe_init(int fd)
fail_if(output_file == NULL, fail_if(output_file == NULL,
"failed to open file '%s'\n", "failed to open file '%s'\n",
output_filename); output_filename);
} else if (!strcmp(key, "capture_only")) {
capture_only = atoi(value);
} else { } else {
fprintf(stderr, "unknown option '%s'\n", key); fprintf(stderr, "unknown option '%s'\n", key);
} }

View File

@ -16,6 +16,10 @@ contents and execution of the GEM application.
-p, --platform=NAME Override PCI ID using a platform name -p, --platform=NAME Override PCI ID using a platform name
-c, --only-capture Only write objects flagged with EXEC_OBJECT_CAPTURE into
the output aub file. This helps reducing output file
size greatly but won't produce a file replayable
-v Enable verbose output -v Enable verbose output
-vv Enable extra verbosity - dumps gtt mappings -vv Enable extra verbosity - dumps gtt mappings
@ -31,6 +35,7 @@ ld_preload="@install_libexecdir@/libintel_dump_gpu.so${LD_PRELOAD:+:$LD_PRELOAD}
args="" args=""
file="" file=""
gdb="" gdb=""
capture_only=""
function add_arg() { function add_arg() {
arg=$1 arg=$1
@ -89,6 +94,14 @@ while true; do
gdb=1 gdb=1
shift shift
;; ;;
-c)
add_arg "capture_only=1"
shift
;;
--only-capture)
add_arg "capture_only=1"
shift
;;
--help) --help)
show_help show_help
;; ;;