iris: rebuild with the phone-crash diagnostic and without force-gles
The bench APK aborted on Iris's phone in AndroidRenderer::new with only a truncated "wgpu error: Validation Error". This build carries ai-app-2 commit 46246ea: a renderer-creation failure now reports the adapter, its limits/downlevel flags, and wgpu's full error chain on screen and in logcat instead of aborting, and build-apk.sh no longer forces the GLES backend (force-gles was meant only for one emulator measurement, but the delivered APK inherited it regardless of target -- the named hypothesis for the crash, per ai-app-2's RUST.md P0 box). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
5d7dee5d1f
commit
8eb87a2289
2 files changed
+35
-5
No files matched your search
@@ -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<Self, String>` 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.
|
||||
Reference in new issue
Block a user