diff --git a/README.md b/README.md index d665097..69b1fc8 100644 --- a/README.md +++ b/README.md @@ -74,13 +74,43 @@ into the repo, never a real transcript). covers only that run. Built with `iris/android-app/build-apk.sh release --abi arm64-v8a` (wraps `cargo ndk -t arm64-v8a --P 26 -o app/src/main/jniLibs/ build --release --features "transcript-screen force-gles bench"` -plus `gradle :app:assembleRelease`, signed with the same `~/.config/ai-app/release.jks` -`app/build-apk.sh` generates, and verifies the result with `aapt2`/`apksigner`). `force-gles` -matches I5's own "Where iris's frame time goes" finding: the default Vulkan backend has no adapter -under a plain `-gpu host` boot on this AVD. +-P 26 -o app/src/main/jniLibs/ build --release --features "transcript-screen bench"` plus `gradle +:app:assembleRelease`, signed with the same `~/.config/ai-app/release.jks` `app/build-apk.sh` +generates, and verifies the result with `aapt2`/`apksigner`). **No longer built with `force-gles` +as of the 2026-09-06 rebuild below** -- see that entry for why it was there and why it had to come +out for a phone build specifically. **2026-09-06, commit `46d3a6f`**: rebuilt after `transcript_ui::TranscriptScreen::apply` replaced the full-rebuild-per-event streaming path in all three iris clients (docs/RUST.md's P0 box has the before/after numbers) -- this is the build to use if comparing against an iris APK from before that commit. + +**2026-09-06, second rebuild, ai-app-2 commit `46246ea`**: this build aborted on Iris's +phone (a Pixel, GrapheneOS) in `AndroidRenderer::new`, on the very first `surface_changed`, with +only `wgpu error: Validation Error` surviving into the crash report before Android truncated it. +Two things changed: + +1. **A renderer-creation failure no longer aborts the process.** `iris_core::UiRenderNode::new` + now runs its bind-group-layout/pipeline creation inside wgpu error scopes and returns + `Result` instead of letting wgpu's default handler panic; the Android backend + turns a failure into the adapter's identity, the exact limits and downlevel flags bind-group + layouts validate against, and wgpu's own "Caused by" chain, logged as one line under the + `iris-android-app` logcat tag and shown on screen as plain, selectable, scrollable text (a + `TextView` swapped in for the whole activity) saying to copy it and send it back. If this build + still fails on the phone, **that screen is what to screenshot or copy** -- there is no more + silent abort to chase through a truncated crash report. +2. **This build no longer forces the GLES backend.** Every earlier `iris-bench-arm64.apk` + (including the one above) was built with `--features "... force-gles ..."`, a flag that exists + only to force the *emulator* off its default software Vulkan and onto GLES for one specific + frame-time measurement (RUST.md's I5) -- its own doc in `iris/Cargo.toml` never mentions real + hardware. `build-apk.sh`'s default feature list carried it into every arm64 build regardless, + so the APK actually delivered to a phone was locked to GLES rather than the phone's own Vulkan + driver. That is the named hypothesis for the crash (docs/RUST.md's P0 box has the full audit): + GLES support for a storage buffer bound in the *vertex* stage (`move_offsets`, `masks_layout`) + depends on the driver reporting `GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS > 0`, which real Vulkan + grants unconditionally but a phone's GLES path is not guaranteed to -- and RUST.md's own + SwiftShader finding already flagged GLES-on-Android as the fragile backend for this exact + shader. This build uses the default backend (Vulkan on a real device) instead. + +If this rebuild still crashes, the on-screen report from point 1 names the real cause directly; +paste it back rather than guessing further from a truncated log. diff --git a/iris/build/outputs/apk/release/iris-bench-arm64.apk b/iris/build/outputs/apk/release/iris-bench-arm64.apk index 13e7c48..2dc5d5b 100644 Binary files a/iris/build/outputs/apk/release/iris-bench-arm64.apk and b/iris/build/outputs/apk/release/iris-bench-arm64.apk differ