Move LazySpan rows through one retained offset
This commit is contained in:
1 parent
0aa03cf621
commit
fffed42f9e
13 files changed
+503
-104
No files matched your search
@@ -12,35 +12,6 @@ and six phone-report sections went on 2026-09-08 for that reason.
|
||||
|
||||
## Fix
|
||||
|
||||
- [ ] **A row moving because the list grew should be one `move_offsets`
|
||||
write, and today it is a redraw.** Found 2026-09-09 by
|
||||
`scripts/rigs/ui-profile`'s `arena_churn` and left for whoever picks
|
||||
this up next; the upload half of it is done and this is the layout
|
||||
half.
|
||||
|
||||
The measurement. Over the bench fixture's 401 streamed deltas, the
|
||||
instance arena uploads **71.9%** of itself per frame against a
|
||||
**71.8%** floor -- those entries genuinely differ, so no amount of
|
||||
better dirty-tracking touches it. The control that says it is wrong is
|
||||
the fling phase on the same screen and the same content: it moves the
|
||||
same primitives every frame and uploads **3.3%**, because a scroll
|
||||
reaches `UiRenderState::mov` and writes one `move_offsets` delta for
|
||||
the subtree (LAYOUT.md section 2) instead of rewriting every
|
||||
primitive's absolute region.
|
||||
|
||||
The list is pinned to the newest end, so a growing reply pushes every
|
||||
earlier row up. `draw_inner` now treats sub-pixel size differences as a
|
||||
move and the span refactor removed nearly all repeated draws, but the
|
||||
instance floor remains 71.8%. The remaining question is why those
|
||||
translations still rewrite primitive regions instead of stopping at
|
||||
the rows' move slots.
|
||||
|
||||
Done looks like: `arena_churn`'s `what_a_streamed_reply_uploads` shows
|
||||
stream instances in the same range as the fling's, and its `whole`
|
||||
column stops being the interesting one. The rig prints floor,
|
||||
uploaded and whole per array precisely so this is checkable rather
|
||||
than argued.
|
||||
|
||||
- [ ] **Where the scroll *pin* lives.** The rest of "scrolling moves out
|
||||
of the list" landed on 2026-09-08 -- `List` is `LazySpan`, the physics
|
||||
and the gesture live in one `ScrollController`, `.scrollable()` is the
|
||||
|
||||
Reference in new issue
Block a user