TEXTURES.md: exercise grow_array (a second atlas layer opening) on tabs

Reasoned through but never watched happen, per the file's own "Not
separately stress-tested" note. Temporarily dropped PAGE from 1024 to
64 so tabs's ordinary mix of text sizes/families already exceeds one
page; a throwaway eprintln in grow_array confirmed two real grows in
one run (1->2, 2->4 layers), and run-headless.sh showed every tab's
text rendering correctly across layers, with no corruption. Both
temporary changes reverted; tabs and minimal confirmed byte-identical
to the pre-check screenshots afterward.

Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
This commit is contained in:
irisandClaude Sonnet committed 2026-09-04 23:44:46 -04:00
1 parent 1a6599e1b2
commit 8db0184384
2 files changed
+27 -13

No files matched your search

+6 -5
View File
@@ -52,11 +52,12 @@ session spending an afternoon on them again.
pixel-identically to before the change. See LAYOUT.md's "Deviations pixel-identically to before the change. See LAYOUT.md's "Deviations
found during implementation" for five real bugs the design's first draft found during implementation" for five real bugs the design's first draft
did not anticipate — worth reading before touching `Aligned`, `Sized`, did not anticipate — worth reading before touching `Aligned`, `Sized`,
`MaxSize`, `Scroll`, or the move-slot lifecycle again. Not done: a `MaxSize`, `Scroll`, or the move-slot lifecycle again. `GpuTextures::grow_array`
pixel-level screenshot check of a `Masked`-wrapped `Scroll` (no example (a second atlas layer opening) has now been exercised too, on `tabs` with
builds one yet — the numeric check in `layout_tests.rs` stands in), and `PAGE` temporarily lowered — see TEXTURES.md's "Exercised, 2026-09-04".
exercising `GpuTextures::grow_array` (a second atlas layer opening) under Not done: a pixel-level screenshot check of a `Masked`-wrapped `Scroll`
load — see TEXTURES.md. (no example builds one yet — the numeric check in `layout_tests.rs`
stands in).
- **E1's keyboard gap is Masonry's `as_input_connection` returning `None` - **E1's keyboard gap is Masonry's `as_input_connection` returning `None`
(a TODO), not android-view or `EditorInfo`.** android-view's own demo (a TODO), not android-view or `EditorInfo`.** android-view's own demo
implements the `InputConnection` trait over a parley editor and gets implements the `InputConnection` trait over a parley editor and gets
+21 -8
View File
@@ -450,14 +450,27 @@ list's ordering would have to be reconciled.
"image span" tab exercises the same widget but needs a click to reach, "image span" tab exercises the same widget but needs a click to reach,
which the headless compositor can't deliver (no seat devices, per I1's which the headless compositor can't deliver (no seat devices, per I1's
own note on this file) — the throwaway example is what stood in for it. own note on this file) — the throwaway example is what stood in for it.
- **Not separately stress-tested**: triggering a second atlas page (the - **Exercised, 2026-09-04: `grow_array` under real load, on `tabs`.**
`grow_array` doubling-and-copy path) under a real glyph load large Rather than building a purpose-made glyph flood, `PAGE`
enough to fill the first 1024x1024 page. The code path was reasoned (`core/src/render/atlas.rs`) was temporarily dropped from 1024 to 64 —
through and matches the existing single-page write exactly except for small enough that `tabs`'s ordinary mix of sizes and families (nothing
the `z` origin and the extra copy, but nobody has watched a real exotic: a handful of `Text` widgets at a few sizes, one at
second-page grow happen on screen. Worth doing before trusting this `Family::Monospace`) already exceeds one page's worth of distinct
under a transcript with a large or unusual glyph set (many distinct glyphs. A one-line `eprintln!` in `grow_array` confirmed two real grows
fonts/sizes, or a font with an unusually large character set). in a single run (`GROW_ARRAY: 1 -> 2` then `GROW_ARRAY: 2 -> 4`, i.e.
glyphs landed on at least a third layer), and
`iris/run-headless.sh tabs --shot` showed every tab's text rendering
correctly with no corruption or missing glyphs — confirming the
`copy_texture_to_texture` grow-and-relocate path and cross-layer
sampling (`GlyphPrimitive.layer` addressing a layer beyond the first)
both work. Command:
`sed -i 's/PAGE: u32 = 1024/PAGE: u32 = 64/' core/src/render/atlas.rs`,
rebuild, `./run-headless.sh tabs --shot /tmp/x.png`, then
`git checkout -- core/src/render/atlas.rs` to revert — this is a
throwaway diagnostic value, never a committed change, since a real
1024px page holding only a handful of glyphs at a time would be mostly
wasted space in normal use. Confirmed the revert left `tabs` and
`minimal` byte-identical to the pre-check screenshots afterward.
- **The decisive check**, `rigs/gpu-probe` rewritten to request iris's new - **The decisive check**, `rigs/gpu-probe` rewritten to request iris's new
(empty) feature/limit set and run on this checkout's own emulator (empty) feature/limit set and run on this checkout's own emulator
(`ai-app-2`, via `emu`), booted with `EMU_GPU=software` so the guest gets (`ai-app-2`, via `emu`), booted with `EMU_GPU=software` so the guest gets