Files

47 lines
3.0 KiB
Bash

#!/usr/bin/env bash
# MobileGL - tools/device_bench/p5f/run_pixel_arm.sh
# Copyright (c) 2025-2026 MobileGL-Dev
# Licensed under the GNU Lesser General Public License v3.0:
# https://www.gnu.org/licenses/gpl-3.0.txt
# https://www.gnu.org/licenses/lgpl-3.0.txt
# SPDX-License-Identifier: LGPL-3.0-only
# End of Source File Header
# Windows Git Bash. Root coordinator runs this only AFTER its own clean reboot.
# Does not reboot, install an APK, alter clocks, clear logcat, or launch FCL.
# Usage: bash run_pixel_arm.sh <bundle-dir> <new-output-dir> DirectGLES|DirectVulkan inproc|monolith 0|1
set -euo pipefail
export MSYS_NO_PATHCONV=1 MSYS2_ARG_CONV_EXCL='*'
BUNDLE=${1:?bundle}; OUT=${2:?new output}; BACKEND=${3:?backend}; TRANSPORT=${4:?transport}; ROLE=${5:?role}
[[ $BACKEND == DirectGLES || $BACKEND == DirectVulkan ]] || exit 64
[[ $TRANSPORT == inproc || $TRANSPORT == monolith ]] || exit 64
[[ $ROLE == 0 || $ROLE == 1 ]] || exit 64
[[ ! -e $OUT ]] || { echo 'Output exists; do not overwrite an arm'; exit 65; }
HEAD_SHA=$(tr -d '\r\n' < "$BUNDLE/source-head.txt")
[[ $HEAD_SHA =~ ^[0-9a-f]{40}$ ]] || exit 66
(cd "$BUNDLE" && sha256sum -c sha256.txt)
ADB_BIN=${ADB_BIN:-/c/Users/geekerwan/AppData/Local/Android/Sdk/platform-tools/adb.exe}
A=("$ADB_BIN" -s 2f7cbe2e)
[[ $("${A[@]}" get-state | tr -d '\r') == device ]] || exit 67
mkdir -p "$OUT"
cp "$BUNDLE/source-head.txt" "$BUNDLE/sha256.txt" "$OUT/"
"${A[@]}" shell cat /proc/sys/kernel/random/boot_id > "$OUT/boot-id.txt"
REMOTE=/data/local/tmp/p5f-${HEAD_SHA:0:12}
TAG=$BACKEND-$TRANSPORT-r$ROLE-$(date +%s)
"${A[@]}" shell "mkdir -p $REMOTE"
for f in libMobileGL.so libc++_shared.so P5fDevicePixels; do
"${A[@]}" push "$BUNDLE/$f" "$REMOTE/$f" > "$OUT/push-$f.log" 2>&1
done
"${A[@]}" shell "chmod 755 $REMOTE/P5fDevicePixels; cd $REMOTE; sha256sum libMobileGL.so libc++_shared.so P5fDevicePixels" > "$OUT/device-sha256.txt"
FILTER='ClipDistanceScenario.AnEnabledClipDistanceRemovesTheNegativeHalf:ClipDistanceScenario.ADisabledClipDistanceRemovesNothing:ClipDistanceScenario.TheEnablesAreIndependentPerDistance:CopyImageLayeredScenario.*:P5fPublicMipmapScenario.*'
printf '%s\n' "backend=$BACKEND transport=$TRANSPORT role=$ROLE" > "$OUT/arm.txt"
rc=0
"${A[@]}" shell "cd $REMOTE; env LD_LIBRARY_PATH=$REMOTE MOBILEGL_BACKEND_TYPE=$BACKEND MOBILEGL_TRANSPORT=$TRANSPORT MOBILEGL_IPC_ROLE_SPLIT_STATE=$ROLE MOBILEGL_IPC_STRICT_ERRORS=1 MOBILEGL_IPC_RUN_AHEAD=1 MOBILEGL_IPC_STAGE_MB=256 MOBILEGL_ITEST_REQUIRE_GPU=1 MOBILEGL_ITEST_REQUIRE_HARDWARE_GPU=1 MOBILEGL_PIPE_STATS=1 MOBILEGL_PIPE_STATS_PERIOD=1 MOBILEGL_LOG_FILE_PATH=$REMOTE/$TAG.library.log ./P5fDevicePixels --gtest_filter='$FILTER' --gtest_output=xml:$REMOTE/$TAG.xml >$REMOTE/$TAG.stdout.txt 2>&1" || rc=$?
printf '%s\n' "$rc" > "$OUT/process-exit.txt"
for f in library.log xml stdout.txt; do
"${A[@]}" pull "$REMOTE/$TAG.$f" "$OUT/$f" > "$OUT/pull-$f.log" 2>&1 || true
done
"${A[@]}" logcat -d -b crash -v time > "$OUT/crash-buffer.txt"
echo "Arm completed with process rc=$rc. Verify XML, library log, boot id, and hashes in $OUT."
exit "$rc"