compositor: Add an initial RefreshDriver (#37169)

This adds a *very* basic implementation of the `RefreshDriver` concept
to the Servo renderer. The initial idea is that controls the frequency
of display during animations. It eliminates the "slowdown" workaround
for WPT tests and now Servo animations don't move faster than 120 FPS
(observed to be slower in practice).

This establishes a base change which will be used to implement
non-display-list-producing layouts in a followup change.

Fixes #3406. (though much more work remains)
Testing: Covered by existing WPT tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Martin Robinson 2025-05-29 12:43:49 +02:00 committed by GitHub
parent 801ac9e22a
commit 9dc1391bef
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 292 additions and 69 deletions

View file

@ -38,6 +38,7 @@ servo_allocator = { path = "../allocator" }
servo_config = { path = "../config" }
servo_geometry = { path = "../geometry" }
stylo_traits = { workspace = true }
timers = { path = "../timers" }
tracing = { workspace = true, optional = true }
webrender = { workspace = true }
webrender_api = { workspace = true }