servo/components
Martin Robinson d8294fa423
layout: Split stacking context and display list construction (#37047)
Previously, after a layout was finished (or skipped in the case of
repaint-only layout), both the stacking context tree and display list
were built. In the case of repaint-only layout, we should be able to
skip the reconstruction of the stacking context tree and only do display
list building.

This change does that, also generally cleaning and up and clarifying the
data structure used during this phase of layout. This opens up the
possibility of a new kind of incremental layout that does both repaint
and a rebuild of the stacking context tree.

On the blaster.html test case[^1], this reduces tightly-measured layout
time from ~45-50 milliseconds to ~25-30 milliseconds on my M3.

[^1]: https://gist.github.com/mrobinson/44ec87d028c0198917a7715a06dd98a0

Testing: There are currently no performance tests for layout. :( This
should
not modify the results of WPT tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2025-05-20 13:42:39 +00:00
..
allocator Organize component Cargo.toml dependencies (#36224) 2025-03-30 19:03:54 +00:00
background_hang_monitor Organize component Cargo.toml dependencies (#36224) 2025-03-30 19:03:54 +00:00
bluetooth Replace bluetooth Readme with corrected version from devices repository (#36429) 2025-04-10 18:02:45 +00:00
canvas canvas: Move generic implementations into GenericPathBuilder trait (#36999) 2025-05-14 03:51:56 +00:00
compositing compositor: Batch all pending scroll event updates into a single transaction (#36974) 2025-05-16 18:26:59 +00:00
config Remove the dom_shadowdom_enabled preference (#37043) 2025-05-18 17:42:21 +00:00
constellation Fully support <input type=color> (#36992) 2025-05-15 17:30:38 +00:00
deny_public_fields Add rust-version to all Cargo.toml files (#33483) 2024-09-17 16:39:07 +00:00
devtools DevTools: Improve resource_available to handle multiple connections (#36933) 2025-05-09 12:06:33 +00:00
dom_struct script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
domobject_derive Update rustfmt to the 2024 style edition (#35764) 2025-03-03 11:26:53 +00:00
fonts fonts: Fix calculation of font underline thickness on macOS (#37029) 2025-05-16 18:23:02 +00:00
geometry servoshell: Allow overriding screen resolution with a command-line argument (#34038) 2024-10-30 11:54:13 +00:00
hyper_serde Update rustfmt to the 2024 style edition (#35764) 2025-03-03 11:26:53 +00:00
jstraceable_derive Add rust-version to all Cargo.toml files (#33483) 2024-09-17 16:39:07 +00:00
layout layout: Split stacking context and display list construction (#37047) 2025-05-20 13:42:39 +00:00
malloc_size_of layout: Share styles to inline box children via SharedInlineStyles (#36896) 2025-05-12 09:38:50 +00:00
media compositing: Combine webrender_traits and compositing_traits (#36372) 2025-04-06 17:34:18 +00:00
metrics Move ScriptToConstellationMsg to constellation_traits (#36364) 2025-04-05 22:13:29 +00:00
net Replace hsts preload list hashmap with an FST (#37015) 2025-05-20 04:26:55 +00:00
pixels pixels: Actually write pixels in MULTIPLY generic_transform_inplace operations (#36895) 2025-05-08 07:38:02 +00:00
profile Remove layout-2013 profiling categories (#37014) 2025-05-15 16:54:02 +00:00
rand Migrate to the 2024 edition (#35755) 2025-03-13 10:28:11 +00:00
range Add rust-version to all Cargo.toml files (#33483) 2024-09-17 16:39:07 +00:00
script script: Make Blob.ArrayBuffer() more specification-compliant (#35748) 2025-05-19 11:55:06 +00:00
script_bindings script: Make Blob.ArrayBuffer() more specification-compliant (#35748) 2025-05-19 11:55:06 +00:00
servo Don't build testbinding-related code by default (#37034) 2025-05-17 08:14:19 +00:00
servo_tracing [tracing] Add convenience macro for function tracing (#36573) 2025-04-22 19:58:20 +00:00
shared layout: Split stacking context and display list construction (#37047) 2025-05-20 13:42:39 +00:00
timers Update rustfmt to the 2024 style edition (#35764) 2025-03-03 11:26:53 +00:00
url Various memory measurement improvements (#36834) 2025-05-07 04:00:12 +00:00
webdriver_server Fix WebDriverSession::input_cancel_list related logic (#37010) 2025-05-19 08:34:04 +00:00
webgl webgl: Use glow::Context::supported_extensions() to implement getSupportedExtensions() (#36911) 2025-05-08 08:34:52 +00:00
webgpu Introduce snapshot concept of canvas (#36119) 2025-04-23 07:32:47 +00:00
webxr libservo: Expose a ServoBuilder (#36549) 2025-04-16 16:58:52 +00:00