060c21c592b8d9c6bf724270bdf9b5e5cf3c9b5e
[mesa.git] / src / intel / tools / intel_dump_gpu.in
1 #!/bin/bash
2 # -*- mode: sh -*-
3
4 function show_help() {
5 cat <<EOF
6 Usage: intel_dump_gpu [OPTION]... [--] COMMAND ARGUMENTS
7
8 Run COMMAND with ARGUMENTS and dump an AUB file that captures buffer
9 contents and execution of the GEM application.
10
11 -g, --gdb Launch GDB
12
13 -o, --output=FILE Name of AUB file. Defaults to COMMAND.aub
14
15 --device=ID Override PCI ID of the reported device
16
17 -p, --platform=NAME Override PCI ID using a platform name
18
19 -v Enable verbose output
20
21 -vv Enable extra verbosity - dumps gtt mappings
22
23 --help Display this help message and exit
24
25 EOF
26
27 exit 0
28 }
29
30 ld_preload="@install_libexecdir@/libintel_dump_gpu.so${LD_PRELOAD:+:$LD_PRELOAD}"
31 args=""
32 file=""
33 gdb=""
34
35 function add_arg() {
36 arg=$1
37 args="$args$arg\n"
38 }
39
40 while true; do
41 case "$1" in
42 -v)
43 add_arg "verbose=1"
44 shift 1
45 ;;
46 -vv)
47 add_arg "verbose=2"
48 shift 1
49 ;;
50 -o)
51 file=$2
52 add_arg "file=${file:-$(basename ${file}).aub}"
53 shift 2
54 ;;
55 -o*)
56 file=${1##-o}
57 add_arg "file=${file:-$(basename ${file}).aub}"
58 shift
59 ;;
60 --output=*)
61 file=${1##--output=}
62 add_arg "file=${file:-$(basename ${file}).aub}"
63 shift
64 ;;
65 --device=*)
66 add_arg "device=${1##--device=}"
67 shift
68 ;;
69 -p)
70 platform=$2
71 add_arg "platform=${platform}"
72 shift 2
73 ;;
74 -p*)
75 platform=${1##-p}
76 add_arg "platform=${platform}"
77 shift
78 ;;
79 --platform=*)
80 platform=${1##-p}
81 add_arg "platform=${platform}"
82 shift
83 ;;
84 --gdb)
85 gdb=1
86 shift
87 ;;
88 -g)
89 gdb=1
90 shift
91 ;;
92 --help)
93 show_help
94 ;;
95 --)
96 shift
97 break
98 ;;
99 -*)
100 echo "intel_aubdump: invalid option: $1"
101 echo
102 show_help
103 ;;
104 *)
105 break
106 ;;
107 esac
108 done
109
110 [ -z $1 ] && show_help
111
112 [ -z $file ] && add_arg "file=intel.aub"
113
114 tmp_file=`mktemp`
115 echo -e $args > $tmp_file
116
117 if [ -z $gdb ]; then
118 LD_PRELOAD="$ld_preload" INTEL_DUMP_GPU_CONFIG=$tmp_file "$@"
119 else
120 gdb -iex "set exec-wrapper env LD_PRELOAD=$ld_preload INTEL_DUMP_GPU_CONFIG=$tmp_file" --args "$@"
121 fi
122
123 ret=$?
124 rm $tmp_file
125 exit $ret