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.
|
in.
|
||||||
|
|
||||||
**#18 `split/18-position-chain`** is open and finished apart from one decision:
|
**#18 `split/18-position-chain`** is open and finished apart from one decision:
|
||||||
worktree `/home/bob/repos/iris-pr18`, head `77bb75e`, twenty-two commits,
|
worktree `/home/bob/repos/iris-pr18`, head `3f7cd82`, twenty-four commits,
|
||||||
workspace tests passing, fmt and clippy clean. The last four are the text
|
workspace tests passing, fmt and clippy clean. It is LAYOUT.md §2's position
|
||||||
shaping work, three retained-layout details that claimed something they did
|
chain, generalised to boxes. The last six are a performance pass that changes
|
||||||
not do, and the many-widgets-dirty cases. It is LAYOUT.md §2's position chain, generalised
|
no layout: the two halves of the text fix (`e5f8b6b`, `2525637`), three
|
||||||
to boxes. `/home/bob/repos/ai-app-2` is on `rustify`, worktree clean.
|
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
|
**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
|
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
|
to stop rescanning, which changes the order widgets settle in and is hers to
|
||||||
agree first.
|
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:
|
The remaining costs after this are:
|
||||||
|
|
||||||
- **Writing a glyph instance per glyph per draw.** With shaping and placement
|
- **Writing a glyph instance per glyph per draw.** With shaping and placement
|
||||||
|
|||||||
Reference in new issue
Block a user