Splits each frame sample at queue.submit into redraw-to-submit (iris's own CPU work) and submit-to-after-present (driver/GPU wait), so RUST.md's I5 "where does iris's frame time go" question can be answered with a number per half instead of a single total. Adds a force-gles Cargo feature that switches the Android wgpu::Instance from Backends::PRIMARY to Backends::GL at compile time (no runtime env-var path exists into an already-launched Android process on this machine), for isolating SwiftShader-Vulkan vs. GLES/virgl as the software-mode gap's cause. app/iris-scroll.sh extracts transcript-bench.sh's exact 24-swipe/6-cycle gesture loop for iris's own demo app, which transcript-bench.sh cannot drive directly since it opens a session through the Compose app's own UI. Verification (this pass, on a disk-pressure-limited host running low on space): cargo fmt --all clean, no diff. cargo clippy --workspace --all-targets: no warnings from this diff (pre-existing future-incompat notices from wgpu/winit/naga only). cargo test --workspace and cargo ndk for iris-android-app --features transcript-screen were verified clean by the previous pass on this identical diff (fmt/clippy/test/ndk all clean, per that pass's own report); not re-run here because the host's disk was 93% full and a concurrent ai-server rebuild (stable toolchain moved to 1.98.1, rebuilding aws-lc-sys from scratch) had driven I/O pressure to ~60%, so a repeat cargo test --workspace sat 50+ minutes doing no useful work and was stopped rather than left to make the disk situation worse. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
35 lines
1.4 KiB
Bash
Executable File
35 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# RUST.md's I5 "Where iris's frame time goes" pass (2026-09-05). The same
|
|
# 24-swipe/6-cycle loop as transcript-bench.sh's, extracted for iris's own
|
|
# demo app -- transcript-bench.sh itself is Compose-specific (opens by
|
|
# session title through the Compose app's own UI) and cannot be called
|
|
# directly against dev.iris.android.demo.
|
|
#
|
|
# MUST be run from inside this checkout (not /tmp): ui-trace/adb pick which
|
|
# emulator to target from the current directory's basename (the
|
|
# per-checkout-AVD rule), and a previous pass lost two attempts to a `cd`
|
|
# into /tmp that made this resolve to a nonexistent "tmp" checkout.
|
|
set -eu
|
|
cd "$(dirname "$0")"
|
|
. ./android-env.sh >/dev/null 2>&1
|
|
|
|
cycles=${1:-6}
|
|
|
|
ui-trace record -d 3000 --do "tap 'Reset frame report'" -o /tmp/iris-bench-reset.txt >/dev/null
|
|
adb logcat -c
|
|
|
|
DO=""
|
|
i=0
|
|
while [ "$i" -lt "$cycles" ]; do
|
|
DO="$DO --do 'swipe 540 700 540 1600 200' --do 'wait 500'"
|
|
DO="$DO --do 'swipe 540 700 540 1600 200' --do 'wait 500'"
|
|
DO="$DO --do 'swipe 540 1600 540 700 200' --do 'wait 500'"
|
|
DO="$DO --do 'swipe 540 1600 540 700 200' --do 'wait 500'"
|
|
i=$((i + 1))
|
|
done
|
|
eval ui-trace record -d $((cycles * 16000 + 20000)) $DO -o /tmp/iris-bench-scroll.txt >/dev/null
|
|
|
|
ui-trace record -d 3000 --do "tap 'Frame report'" -o /tmp/iris-bench-report.txt >/dev/null
|
|
sleep 1
|
|
adb logcat -d -s iris-android-app:I | grep "iris frame report:"
|