iris: eliminate retained-frame heap churn
This commit is contained in:
1 parent
badd758d9b
commit
715c86e7e2
22 files changed
+527
-196
No files matched your search
@@ -215,6 +215,12 @@ widget observed during that same draw; the next draw replaces the list, so a
|
||||
dependency disappears as soon as the widget stops reading it. Both fields
|
||||
have `ActiveData`'s existing lifecycle through `remove`/`remove_rec`.
|
||||
|
||||
Retained draw output uses two buffers per collection. A redraw clears and
|
||||
fills the spare child, primitive, texture, and paint buffers while consuming
|
||||
the current buffers for reuse, then swaps their roles. Stable redraws therefore
|
||||
reuse vector capacity and move matching resource handles instead of allocating
|
||||
new collections or changing resource reference counts each frame.
|
||||
|
||||
### 6. Rejected alternatives
|
||||
|
||||
- **A flat (non-chained) per-subtree offset table**, Iris's literal
|
||||
|
||||
+3
-1
@@ -819,7 +819,9 @@ reads it during `draw` and calls `request_next_frame` while it remains active.
|
||||
Iris stages the requesting widget's invalidation until the current retained
|
||||
redraw has finished, then the host schedules the next platform frame before
|
||||
renderer update or swapchain acquisition. `Widget::draw` still returns unit,
|
||||
and `Widget` has no tick callback.
|
||||
and `Widget` has no tick callback. Retained draw records alternate between two
|
||||
buffers for children, primitives, textures, and paints, so steady frame-driven
|
||||
redraws reuse their storage and matching resource handles.
|
||||
|
||||
**Iris ships no fonts, and font families are application-named strings**
|
||||
(2026-09-12). Applications register their own font bytes on `Ui` and select
|
||||
|
||||
Reference in new issue
Block a user