servo/components/layout
Martin Robinson 436c9072c4
layout: Skip box tree construction when possible (#37957)
When a style change does not chang the structure of the box tree, it is
possible to skip box tree rebuilding for an element. This change adds
support for reusing old box trees when no element has that type of
damage. In order to make this happen, there needs to be a type of
"empty" `LayoutDamage` that just indicates that a fragment tree layout
is necessary.

This is the first step toward incremental fragment tree layout.

Testing: This should not change observable behavior and thus is covered
by
existing WPT tests. Performance numbers to follow.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2025-07-09 17:33:09 +00:00
..
display_list layout: Only create a LayoutContext if restyling (#37726) 2025-06-27 15:01:30 +00:00
flexbox layout: Skip box tree construction when possible (#37957) 2025-07-09 17:33:09 +00:00
flow layout: Skip box tree construction when possible (#37957) 2025-07-09 17:33:09 +00:00
fragment_tree layout: Move BoxFragment's block-level info into a dedicated struct (#37938) 2025-07-09 15:04:57 +00:00
stylesheets script: Use an implemented pseudo-element to fortype=color ::color-swatch (#37427) 2025-07-09 15:36:58 +00:00
table layout: Skip box tree construction when possible (#37957) 2025-07-09 17:33:09 +00:00
taffy layout: Skip box tree construction when possible (#37957) 2025-07-09 17:33:09 +00:00
tests layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
Cargo.toml layout: Store most anonymous pseudo-elements in box slots (#37941) 2025-07-08 15:22:09 +00:00
cell.rs layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
construct_modern.rs Layout: Continue support incremental box tree reconstruction for flex&taffy level box (#37854) 2025-07-04 09:35:09 +00:00
context.rs layout: Only create a LayoutContext if restyling (#37726) 2025-06-27 15:01:30 +00:00
dom.rs layout: Skip box tree construction when possible (#37957) 2025-07-09 17:33:09 +00:00
dom_traversal.rs layout: Store most anonymous pseudo-elements in box slots (#37941) 2025-07-08 15:22:09 +00:00
formatting_contexts.rs layout: Unify logic for laying out replaced and non-replaced in a BFC (#37864) 2025-07-04 17:47:40 +00:00
geom.rs layout: Fix block SizeConstraint for replaced elements (#37758) 2025-06-30 12:07:37 +00:00
layout_box_base.rs layout: Skip box tree construction when possible (#37957) 2025-07-09 17:33:09 +00:00
layout_impl.rs layout: Skip box tree construction when possible (#37957) 2025-07-09 17:33:09 +00:00
lib.rs layout: Move text decoration propagation to stacking context tree construction (#37069) 2025-05-21 16:38:29 +00:00
lists.rs Upgrade Stylo to 2025-06-03 (#37444) 2025-06-19 12:30:32 +00:00
positioned.rs layout: Unify layout logic for replaced and non-replaced abspos (#37943) 2025-07-09 08:44:27 +00:00
query.rs Rename script_layout_interface to layout_api (#37591) 2025-06-20 17:13:05 +00:00
quotes.rs layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
replaced.rs layout: Unify logic for laying out replaced and non-replaced in a BFC (#37864) 2025-07-04 17:47:40 +00:00
sizing.rs layout: Fix block SizeConstraint for replaced elements (#37758) 2025-06-30 12:07:37 +00:00
style_ext.rs layout: Skip box tree construction when possible (#37957) 2025-07-09 17:33:09 +00:00
traversal.rs layout: Skip box tree construction when possible (#37957) 2025-07-09 17:33:09 +00:00