tools: Add LD_PRELOAD-based AUB dumper tool

This does everything the aub dump functionality in libdrm does, but
without being part of libdrm.  This moves the very developer oriented
functionality out of core libdrm and adds some flexibility in how we
activate it (we can specify filename, for example).  Most importantly,
this lets us dump aub files for tools and/or drivers that don't use
libdrm, without having to add that code to each of those projects.

The tool is used much like strace or valgrind.  For example:

  $ intel_aubdump -v --output=stuff.aub -- glxgears -geometry 500x500

will launch glxgears with its options and enable aub dumping and pass
the -v and --output=stuff.aub options to the aub dumper.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
This commit is contained in:
Kristian Høgsberg Kristensen
2015-07-29 23:12:16 -07:00
parent 6bd42ce9c7
commit e6a5d799fc
6 changed files with 758 additions and 1 deletions
+70
View File
@@ -0,0 +1,70 @@
#!/bin/bash
# -*- mode: sh -*-
function show_help() {
cat <<EOF
Usage: intel_aubdump [OPTION]... [--] COMMAND ARGUMENTS
Run COMMAND with ARGUMENTS and dump an AUB file that captures buffer
contents and execution of the GEM application.
-o, --output=FILE Name of AUB file. Defaults to COMMAND.aub
-v Enable verbose output
--help Display this help message and exit
EOF
exit 0
}
verbose=0
while true; do
case "$1" in
-o)
file=$2
shift 2
;;
-v)
verbose=1
shift 1
;;
-o*)
file=${1##-o}
shift
;;
--output=*)
file=${1##--output=}
shift
;;
--help)
show_help
;;
--)
shift
break
;;
-*)
echo "intel_aubdump: invalid option: $1"
echo
show_help
;;
*)
break
;;
esac
done
[ -z $1 ] && show_help
file=${file:-$(basename $1).aub}
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
LD_PRELOAD=${libdir}/intel_aubdump.so${LD_PPRELOAD:+:${LD_PRELOAD}} \
INTEL_AUBDUMP_ARGS="verbose=$verbose;file=$file" \
exec -- "$@"