| set -e |
| |
| TARGET="host" |
| if [[ "$OSTYPE" == "darwin"* ]]; then |
| DEFAULT_BACKEND=metal |
| elif [[ "$OSTYPE" == "msys" ]]; then |
| DEFAULT_BACKEND=d3d |
| else |
| DEFAULT_BACKEND=gl |
| fi |
| |
| NUMBER_OF_PROCESSORS="${NUMBER_OF_PROCESSORS:-$(nproc 2>/dev/null || sysctl -n hw.physicalcpu)}" |
| if [[ $NUMBER_OF_PROCESSORS > 20 ]]; then |
| ARGS=-j6 |
| else |
| ARGS=-j4 |
| fi |
| |
| DIFF_ARGS= |
| |
| while :; do |
| case $1 in |
| -u) |
| TARGET="unreal" |
| DEFAULT_BACKEND=rhi |
| ARGS="$ARGS --no-rebuild --no-install" |
| shift |
| ;; |
| -ua) |
| TARGET="unreal_android" |
| DEFAULT_BACKEND=rhi |
| ARGS="$ARGS --no-rebuild" |
| shift |
| ;; |
| -i) |
| TARGET="ios" |
| DEFAULT_BACKEND=metal |
| UDID="$(idevice_id -l)" # brew install ideviceinstaller |
| shift |
| ;; |
| -s) |
| TARGET="iossim" |
| DEFAULT_BACKEND=metal |
| UDID="$(xcrun simctl list devices | grep '(Booted)' | sed 's/^[^(]*(\([A-Z0-9\-]*\)) (Booted).*$/\1/')" |
| shift |
| ;; |
| -a|-a32) |
| TARGET="android" |
| DEFAULT_BACKEND=gl |
| SERIAL="$(adb get-serialno)" |
| if [[ "$1" == "-a32" ]]; then |
| ARGS="--android-arch arm" |
| fi |
| shift |
| ;; |
| -w) |
| TARGET="webbrowser" |
| DEFAULT_BACKEND=gl |
| shift |
| ;; |
| -ws) |
| TARGET="webserver" |
| DEFAULT_BACKEND=gl |
| shift |
| ;; |
| -R) |
| REBASELINE=true |
| shift |
| ;; |
| -r) |
| ARGS="$ARGS --remote" |
| shift |
| ;; |
| -v) |
| ARGS="$ARGS --verbose" |
| shift |
| ;; |
| -n) |
| ARGS="$ARGS --no-rebuild --no-install" |
| shift |
| ;; |
| -H) |
| DIFF_ARGS="$DIFF_ARGS -H" |
| shift |
| ;; |
| -t[0-9] | -t[0-9][0-9] ) |
| DIFF_ARGS="$DIFF_ARGS --threshold=${1: 2}" |
| shift |
| ;; |
| *) |
| break |
| ;; |
| esac |
| done |
| |
| open_file() { |
| if which start >/dev/null; then # windows |
| start $1 |
| elif which open >/dev/null; then # mac |
| open $1 |
| else |
| gnome-open $1 |
| fi |
| } |
| |
| # Updated to "--no-rebuild --no-install" after the first backend (so we only |
| # rebuild once). |
| NO_REBUILD= |
| |
| for BACKEND in "${@:-$DEFAULT_BACKEND}" |
| do |
| ID=$BACKEND |
| if ! [ -z "$RIVE_GPU" ]; then |
| ID="$RIVE_GPU/$BACKEND" |
| fi |
| if [[ "$TARGET" == "ios" ]]; then |
| ID="ios_$UDID/$BACKEND" |
| elif [[ "$TARGET" == "iossim" ]]; then |
| ID="iossim_$UDID/$BACKEND" |
| elif [[ "$TARGET" == "android" ]]; then |
| ID="android_$SERIAL/$BACKEND" |
| elif [[ "$TARGET" != "host" ]]; then |
| ID="$TARGET/$BACKEND" |
| fi |
| |
| if [ "$REBASELINE" == true ]; then |
| echo |
| echo "Rebaselining $ID..." |
| rm -fr .gold/$ID |
| python3 deploy_tests.py gms goldens $ARGS --target=$TARGET --outdir=.gold/$ID --backend=$BACKEND $NO_REBUILD |
| else |
| echo |
| echo "Checking $ID..." |
| rm -fr .gold/candidates/$ID |
| python3 deploy_tests.py gms goldens $ARGS --target=$TARGET --outdir=.gold/candidates/$ID --backend=$BACKEND $NO_REBUILD |
| |
| echo |
| echo "Checking $ID..." |
| rm -fr .gold/diffs/$ID && mkdir -p .gold/diffs/$ID |
| python3 diff.py $DIFF_ARGS -g .gold/$ID -c .gold/candidates/$ID -j$NUMBER_OF_PROCESSORS -o .gold/diffs/$ID \ |
| || open_file .gold/diffs/$ID/index.html |
| fi |
| |
| NO_REBUILD="--no-rebuild --no-install" |
| done |