[webkit-changes] [WebKit/WebKit] 8f9dae: [threaded-animation-resolution] avoid scheduling s...
Antoine Quint
noreply at github.com
Fri Feb 16 14:17:18 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8f9dae218112f4584491b2f8c573392a470378f8
https://github.com/WebKit/WebKit/commit/8f9dae218112f4584491b2f8c573392a470378f8
Author: Antoine Quint <graouts at webkit.org>
Date: 2024-02-16 (Fri, 16 Feb 2024)
Changed paths:
M Source/WebCore/animation/KeyframeEffect.cpp
M Source/WebCore/animation/KeyframeEffect.h
M Source/WebCore/platform/animation/AcceleratedEffect.cpp
M Source/WebCore/platform/animation/AcceleratedEffect.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
Log Message:
-----------
[threaded-animation-resolution] avoid scheduling style resolution while accelerated animations are entirely accelerated
https://bugs.webkit.org/show_bug.cgi?id=269592
Reviewed by Dean Jackson.
A key advantage of using accelerated animations is to avoid resolving styles on each animation frame if all animated
properties are accelerated. We now ensure that we do this correctly for threaded animation resolution.
To do so, we introduce a 1:1 link between a `KeyframeEffect` and its resulting `AcceleratedEffect` should one qualify
to be created with all the constraints around acceleration interpolation. We use a `WeakPtr<>` to establish this link,
ensuring that as soon as the accelerated effect is cleared, the link is broken.
With the accelerated representation of the keyframe effect now available, we can return `true` under the method
`KeyframeEffect::ticksContinuouslyWhileActive()` if one exists and has no disallowed properties set on it.
* Source/WebCore/animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::ticksContinuouslyWhileActive const):
* Source/WebCore/animation/KeyframeEffect.h:
* Source/WebCore/platform/animation/AcceleratedEffect.cpp:
(WebCore::AcceleratedEffect::validateFilters):
* Source/WebCore/platform/animation/AcceleratedEffect.h:
(WebCore::AcceleratedEffect::disallowedProperties const):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAcceleratedEffectsAndBaseValues):
Canonical link: https://commits.webkit.org/274881@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list