#!/bin/bash
# bench.sh NAME [ENV=VALUE ...] -- bench_path.tscn under Nsight Systems, then export + summary.
# tools/perf/bench.sh sea BENCH_MAP=map_dc_erosion BENCH_SPEED=0.1 'BENCH_PATH=31337,-5925,-21500;31338,-5925,-21500'
set -u
REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
. "$REPO/scripts/engine.sh"
OUT="${PERF_OUT:-$HOME/.cache/hyper-tps-perf}"
mkdir -p "$OUT"
N="$1"; shift
cd "$REPO" || exit 1
env CI=true HYPERTPS_DAEMON_TCP=127.0.0.1:1 BENCH_OUT="$OUT/$N" "$@" \
timeout 900 nsys profile -t vulkan,vulkan-annotations,osrt --vulkan-gpu-workload=individual \
-s process-tree --cpuctxsw=process-tree -o "$OUT/$N" -f true \
"$GODOT" --path . --resolution 1920x1080 --gpu-markers res://scenes/test/bench_path.tscn \
> "$OUT/$N.log" 2>&1
echo "exit=$? log=$OUT/$N.log"
command grep -E '\[bench-path\]|SCRIPT ERROR|Parse Error' "$OUT/$N.log" | command grep -v -E '^\[bench-path\] mesh ' | cut -c1-220
nsys export -t sqlite -f true -o "$OUT/$N.sqlite" "$OUT/$N.nsys-rep" > /dev/null 2>&1 && echo "sqlite=$OUT/$N.sqlite"