#!/bin/bash # -*- mode: sh -*- function show_help() { cat <<EOF Usage: intel_dump_gpu [OPTION]... [--] COMMAND ARGUMENTS Run COMMAND with ARGUMENTS and dump an AUB file that captures buffer contents and execution of the GEM application. -g, --gdb Launch GDB -o, --output=FILE Name of AUB file. Defaults to COMMAND.aub --device=ID Override PCI ID of the reported device -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 -f, --frame=ID Only dump objects for frame ID -v Enable verbose output -vv Enable extra verbosity - dumps gtt mappings --help Display this help message and exit EOF exit 0 } ld_preload="@install_libexecdir@/libintel_dump_gpu.so${LD_PRELOAD:+:$LD_PRELOAD}" args="" file="" gdb="" capture_only="" frame="" function add_arg() { arg=$1 args="$args$arg\n" } while true; do case "$1" in -v) add_arg "verbose=1" shift 1 ;; -vv) add_arg "verbose=2" shift 1 ;; -o) file=$2 add_arg "file=${file:-$(basename ${file}).aub}" shift 2 ;; -o*) file=${1##-o} add_arg "file=${file:-$(basename ${file}).aub}" shift ;; --output=*) file=${1##--output=} add_arg "file=${file:-$(basename ${file}).aub}" shift ;; --device=*) add_arg "device=${1##--device=}" shift ;; -p) platform=$2 add_arg "platform=${platform}" shift 2 ;; -p*) platform=${1##-p} add_arg "platform=${platform}" shift ;; --platform=*) platform=${1##--platform=} add_arg "platform=${platform}" shift ;; -f) frame=$2 add_arg "frame=${frame}" shift 2 ;; -f*) frame=${1##-f} add_arg "frame=${frame}" shift ;; --frame=*) frame=${1##--frame=} add_arg "frame=${frame}" shift ;; --gdb) gdb=1 shift ;; -g) gdb=1 shift ;; -c) add_arg "capture_only=1" shift ;; --only-capture) add_arg "capture_only=1" shift ;; --help) show_help ;; --) shift break ;; -*) echo "intel_aubdump: invalid option: $1" echo show_help ;; *) break ;; esac done [ -z $1 ] && show_help [ -z $file ] && add_arg "file=intel.aub" tmp_file=`mktemp` echo -e $args > $tmp_file if [ -z $gdb ]; then LD_PRELOAD="$ld_preload" INTEL_DUMP_GPU_CONFIG=$tmp_file "$@" else gdb -iex "set exec-wrapper env LD_PRELOAD=$ld_preload INTEL_DUMP_GPU_CONFIG=$tmp_file" --args "$@" fi ret=$? rm $tmp_file exit $ret