[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