xref: /aosp_15_r20/external/igt-gpu-tools/tools/intel_aubdump.in (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Worker#!/bin/bash
2*d83cc019SAndroid Build Coastguard Worker# -*- mode: sh -*-
3*d83cc019SAndroid Build Coastguard Worker
4*d83cc019SAndroid Build Coastguard Workerfunction show_help() {
5*d83cc019SAndroid Build Coastguard Worker    cat <<EOF
6*d83cc019SAndroid Build Coastguard WorkerUsage: intel_aubdump [OPTION]... [--] COMMAND ARGUMENTS
7*d83cc019SAndroid Build Coastguard Worker
8*d83cc019SAndroid Build Coastguard WorkerRun COMMAND with ARGUMENTS and dump an AUB file that captures buffer
9*d83cc019SAndroid Build Coastguard Workercontents and execution of the GEM application.
10*d83cc019SAndroid Build Coastguard Worker
11*d83cc019SAndroid Build Coastguard Worker  -o, --output=FILE  Name of AUB file. Defaults to COMMAND.aub
12*d83cc019SAndroid Build Coastguard Worker
13*d83cc019SAndroid Build Coastguard Worker  -c, --command=CMD  Execute CMD and write the AUB file's content to its
14*d83cc019SAndroid Build Coastguard Worker                     standard input
15*d83cc019SAndroid Build Coastguard Worker
16*d83cc019SAndroid Build Coastguard Worker      --device=ID    Override PCI ID of the reported device
17*d83cc019SAndroid Build Coastguard Worker
18*d83cc019SAndroid Build Coastguard Worker  -v                 Enable verbose output
19*d83cc019SAndroid Build Coastguard Worker
20*d83cc019SAndroid Build Coastguard Worker      --help         Display this help message and exit
21*d83cc019SAndroid Build Coastguard Worker
22*d83cc019SAndroid Build Coastguard WorkerEOF
23*d83cc019SAndroid Build Coastguard Worker
24*d83cc019SAndroid Build Coastguard Worker    exit 0
25*d83cc019SAndroid Build Coastguard Worker}
26*d83cc019SAndroid Build Coastguard Worker
27*d83cc019SAndroid Build Coastguard Workerargs=""
28*d83cc019SAndroid Build Coastguard Workercommand=""
29*d83cc019SAndroid Build Coastguard Workerfile=""
30*d83cc019SAndroid Build Coastguard Worker
31*d83cc019SAndroid Build Coastguard Workerfunction add_arg() {
32*d83cc019SAndroid Build Coastguard Worker    arg=$1
33*d83cc019SAndroid Build Coastguard Worker    args="$args$arg\n"
34*d83cc019SAndroid Build Coastguard Worker}
35*d83cc019SAndroid Build Coastguard Worker
36*d83cc019SAndroid Build Coastguard Workerfunction build_command () {
37*d83cc019SAndroid Build Coastguard Worker      command=""
38*d83cc019SAndroid Build Coastguard Worker      for i in $1; do
39*d83cc019SAndroid Build Coastguard Worker	  if [ -z $command ]; then
40*d83cc019SAndroid Build Coastguard Worker	      command=$i
41*d83cc019SAndroid Build Coastguard Worker	  else
42*d83cc019SAndroid Build Coastguard Worker	      command="$command,$i"
43*d83cc019SAndroid Build Coastguard Worker	  fi;
44*d83cc019SAndroid Build Coastguard Worker      done
45*d83cc019SAndroid Build Coastguard Worker}
46*d83cc019SAndroid Build Coastguard Worker
47*d83cc019SAndroid Build Coastguard Workerwhile true; do
48*d83cc019SAndroid Build Coastguard Worker      case "$1" in
49*d83cc019SAndroid Build Coastguard Worker	  -o)
50*d83cc019SAndroid Build Coastguard Worker	      file=$2
51*d83cc019SAndroid Build Coastguard Worker	      add_arg "file=${file:-$(basename ${file}).aub}"
52*d83cc019SAndroid Build Coastguard Worker	      shift 2
53*d83cc019SAndroid Build Coastguard Worker	      ;;
54*d83cc019SAndroid Build Coastguard Worker	  -v)
55*d83cc019SAndroid Build Coastguard Worker	      add_arg "verbose=1"
56*d83cc019SAndroid Build Coastguard Worker	      shift 1
57*d83cc019SAndroid Build Coastguard Worker	      ;;
58*d83cc019SAndroid Build Coastguard Worker	  -o*)
59*d83cc019SAndroid Build Coastguard Worker	      file=${1##-o}
60*d83cc019SAndroid Build Coastguard Worker	      add_arg "file=${file:-$(basename ${file}).aub}"
61*d83cc019SAndroid Build Coastguard Worker	      shift
62*d83cc019SAndroid Build Coastguard Worker	      ;;
63*d83cc019SAndroid Build Coastguard Worker	  --output=*)
64*d83cc019SAndroid Build Coastguard Worker	      file=${1##--output=}
65*d83cc019SAndroid Build Coastguard Worker	      add_arg "file=${file:-$(basename ${file}).aub}"
66*d83cc019SAndroid Build Coastguard Worker	      shift
67*d83cc019SAndroid Build Coastguard Worker	      ;;
68*d83cc019SAndroid Build Coastguard Worker	  -c)
69*d83cc019SAndroid Build Coastguard Worker	      build_command "$2"
70*d83cc019SAndroid Build Coastguard Worker	      add_arg "command=$command"
71*d83cc019SAndroid Build Coastguard Worker	      shift 2
72*d83cc019SAndroid Build Coastguard Worker	      ;;
73*d83cc019SAndroid Build Coastguard Worker	  --command=*)
74*d83cc019SAndroid Build Coastguard Worker	      build_command "${1##--command=}"
75*d83cc019SAndroid Build Coastguard Worker	      add_arg "command=$command"
76*d83cc019SAndroid Build Coastguard Worker	      shift
77*d83cc019SAndroid Build Coastguard Worker	      ;;
78*d83cc019SAndroid Build Coastguard Worker	  --device=*)
79*d83cc019SAndroid Build Coastguard Worker	      add_arg "device=${1##--device=}"
80*d83cc019SAndroid Build Coastguard Worker	      shift
81*d83cc019SAndroid Build Coastguard Worker	      ;;
82*d83cc019SAndroid Build Coastguard Worker	  --help)
83*d83cc019SAndroid Build Coastguard Worker	      show_help
84*d83cc019SAndroid Build Coastguard Worker	      ;;
85*d83cc019SAndroid Build Coastguard Worker	  --)
86*d83cc019SAndroid Build Coastguard Worker	      shift
87*d83cc019SAndroid Build Coastguard Worker	      break
88*d83cc019SAndroid Build Coastguard Worker	      ;;
89*d83cc019SAndroid Build Coastguard Worker	  -*)
90*d83cc019SAndroid Build Coastguard Worker	      echo "intel_aubdump: invalid option: $1"
91*d83cc019SAndroid Build Coastguard Worker	      echo
92*d83cc019SAndroid Build Coastguard Worker	      show_help
93*d83cc019SAndroid Build Coastguard Worker	      ;;
94*d83cc019SAndroid Build Coastguard Worker	  *)
95*d83cc019SAndroid Build Coastguard Worker	      break
96*d83cc019SAndroid Build Coastguard Worker	      ;;
97*d83cc019SAndroid Build Coastguard Worker      esac
98*d83cc019SAndroid Build Coastguard Workerdone
99*d83cc019SAndroid Build Coastguard Worker
100*d83cc019SAndroid Build Coastguard Worker[ -z $1 ] && show_help
101*d83cc019SAndroid Build Coastguard Worker
102*d83cc019SAndroid Build Coastguard Worker[ -z $file ] && [ -z $command ] && add_arg "file=intel.aub"
103*d83cc019SAndroid Build Coastguard Worker
104*d83cc019SAndroid Build Coastguard Workerprefix=@prefix@
105*d83cc019SAndroid Build Coastguard Workerexec_prefix=@exec_prefix@
106*d83cc019SAndroid Build Coastguard Workerlibdir=@libdir@
107*d83cc019SAndroid Build Coastguard Worker
108*d83cc019SAndroid Build Coastguard WorkerLD_PRELOAD=${libdir}/intel_aubdump.so${LD_PPRELOAD:+:${LD_PRELOAD}} \
109*d83cc019SAndroid Build Coastguard Worker	  exec -- "$@" 3<<EOF
110*d83cc019SAndroid Build Coastguard Worker`echo -e $args`
111*d83cc019SAndroid Build Coastguard WorkerEOF
112