Edit

IABSD.fr/xenocara/lib/mesa/src/intel/tools/intel_dump_gpu.in

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2024-04-02 09:25:31
    Hash : 874d2ba3
    Message : Import Mesa 23.3.6

  • lib/mesa/src/intel/tools/intel_dump_gpu.in
  • #!/usr/bin/env 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