Bring the state of #18 and what a frame is made of up to date
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cb2942bf58
commit
f486f00ec9
1 file changed
+16
-5
@@ -9,11 +9,15 @@ Canonical `main` is **`ca2b4b2`** (#17, the headless rig). Sixteen slices are
|
||||
in.
|
||||
|
||||
**#18 `split/18-position-chain`** is open and finished apart from one decision:
|
||||
worktree `/home/bob/repos/iris-pr18`, head `77bb75e`, twenty-two commits,
|
||||
workspace tests passing, fmt and clippy clean. The last four are the text
|
||||
shaping work, three retained-layout details that claimed something they did
|
||||
not do, and the many-widgets-dirty cases. It is LAYOUT.md §2's position chain, generalised
|
||||
to boxes. `/home/bob/repos/ai-app-2` is on `rustify`, worktree clean.
|
||||
worktree `/home/bob/repos/iris-pr18`, head `3f7cd82`, twenty-four commits,
|
||||
workspace tests passing, fmt and clippy clean. It is LAYOUT.md §2's position
|
||||
chain, generalised to boxes. The last six are a performance pass that changes
|
||||
no layout: the two halves of the text fix (`e5f8b6b`, `2525637`), three
|
||||
retained-layout details that claimed something they did not do (`f1a47e9`),
|
||||
the many-widgets-dirty cases (`77bb75e`), what the settle order is holding up
|
||||
(`bf94380`), and carrying a widget's depth rather than walking for it
|
||||
(`3f7cd82`). Every one of them keeps the five reference renders and the resize
|
||||
render byte-identical, and the hundred-seed sweep passes. `/home/bob/repos/ai-app-2` is on `rustify`, worktree clean.
|
||||
|
||||
**The one thing waiting on the owner.** `tabs` at 1920x1200 is no longer
|
||||
byte-identical to `upstream/main`: 1,283 pixels of 2.3M (0.06%), two
|
||||
@@ -464,6 +468,13 @@ rather than by length. Memoizing the depth walk within one scan does not pay
|
||||
to stop rescanning, which changes the order widgets settle in and is hers to
|
||||
agree first.
|
||||
|
||||
**What a frame is made of now**, `perf record` on the `many` phase at 130 of
|
||||
260 dirty, which is the heaviest thing the rig has: `Layers::write` 16%,
|
||||
parley's `break_all_lines` 15%, `Painter::glyphs` 14%, `InstanceList::push` 7%,
|
||||
`LayerDraws::free` 6%, `draw_inner` 5.5%, choosing the next dirty widget 4.7%.
|
||||
Four fifths of it is primitive bookkeeping, and none of that has had a pass.
|
||||
That is where to look next rather than at the settle loop.
|
||||
|
||||
The remaining costs after this are:
|
||||
|
||||
- **Writing a glyph instance per glyph per draw.** With shaping and placement
|
||||
|
||||
Reference in new issue
Block a user