mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
47 lines
3.0 KiB
Bash
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"
|