157 lines
3.4 KiB
Bash
Executable File
157 lines
3.4 KiB
Bash
Executable File
#!/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
|