Branch: refs/heads/webkitglib/2.54
Home: https://github.com/WebKit/WebKit
Commit: 6fc5f640beedd0c5fdb28bd47fbd214d3c328d1b
https://github.com/WebKit/WebKit/commit/6fc5f640beedd0c5fdb28bd47fbd214d3c328d1b
Author: Vitaly Dyachkov <[email protected]>
Date: 2026-09-09 (Wed, 09 Sep 2026)
Changed paths:
A
LayoutTests/webanimations/accelerated-animation-not-invalidated-by-sibling-timeline-ticks-expected.txt
A
LayoutTests/webanimations/accelerated-animation-not-invalidated-by-sibling-timeline-ticks.html
M Source/WebCore/animation/KeyframeEffect.cpp
Log Message:
-----------
Cherry-pick 320647@main (1508d59b56eb).
https://bugs.webkit.org/show_bug.cgi?id=323436
[Web Animations] Fully accelerated animations unnecessarily invalidate
style while a non-accelerated animation is running
https://bugs.webkit.org/show_bug.cgi?id=323436
Reviewed by Antoine Quint.
When a page has at least one animation that cannot run on the
compositor, that animation forces the page to process animation updates
on every frame. While this happens, other animations on the same page
that are otherwise running entirely on the compositor have their style
needlessly recalculated on every update too, and in some cases this can
force layout.
`KeyframeEffect::animationDidTick()` unconditionally invalidated the
target's style on every tick, even for effects that were fully
accelerated and confirmed running on the compositor, whenever some other
animation on the shared timeline forced that tick.
Skip `invalidate()` when the effect is completely accelerated, confirmed
running accelerated, and its phase hasn't changed since it was last
applied.
Progress-based (scroll/view) timeline effects are excluded from this
fast path, since their current time is driven by input rather than
tracked autonomously by the compositor, and can change within the same
phase.
Test:
webanimations/accelerated-animation-not-invalidated-by-sibling-timeline-ticks.html
* Source/WebCore/animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::animationDidTick):
*
LayoutTests/webanimations/accelerated-animation-not-invalidated-by-sibling-timeline-ticks-expected.txt:
Added.
*
LayoutTests/webanimations/accelerated-animation-not-invalidated-by-sibling-timeline-ticks.html:
Added.
Canonical link: https://commits.webkit.org/320647@main
Canonical link: https://commits.webkit.org/317695.245@webkitglib/2.54
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications