[webkit-changes] [WebKit/WebKit] 6e1a46: [threaded-animation-resolution] add support for CS...

Antoine Quint noreply at github.com
Thu Feb 15 23:11:35 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6e1a4631f5a8234497d346e367a31df3a29fcd23
      https://github.com/WebKit/WebKit/commit/6e1a4631f5a8234497d346e367a31df3a29fcd23
  Author: Antoine Quint <graouts at webkit.org>
  Date:   2024-02-15 (Thu, 15 Feb 2024)

  Changed paths:
    M Source/WebCore/animation/CSSPropertyAnimation.cpp
    M Source/WebCore/animation/WebAnimationTypes.h
    M Source/WebCore/platform/animation/AcceleratedEffect.cpp
    M Source/WebCore/platform/animation/AcceleratedEffectValues.cpp
    M Source/WebCore/platform/animation/AcceleratedEffectValues.h
    M Source/WebCore/platform/animation/AnimationUtilities.h
    M Source/WebCore/rendering/MotionPath.cpp
    M Source/WebCore/rendering/MotionPath.h
    M Source/WebCore/rendering/RenderLayerBacking.cpp
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in

  Log Message:
  -----------
  [threaded-animation-resolution] add support for CSS Motion Path properties
https://bugs.webkit.org/show_bug.cgi?id=269503

Reviewed by Dean Jackson.

With threaded animation resolution we can now add support for accelerated interpolation
of CSS Motion Path properties, the `offset` shorthand and its longhands.

To do this, we need to add two new members to `AcceleratedEffectValues`:

    std::optional<TransformOperationData> transformOperationData;
    TransformBox transformBox;

These two new members are required to be able to call into an alternate version of the
`MotionPath::applyMotionPathTransform()` method which works without a RenderStyle, but
rather using individual properties read from RenderStyle. We also adjust the `AcceleratedEffectValues`
constructor to take in a renderer to be able to set up those two new members.

This also required a small refactor related to `BlendingContext` since we need to be
able to adjust the context for discrete interpolation in the case of the `offset-rotate`
property which has an ASSERT() to check we only call its blending function for a discrete
interpolation if the context reflects that.

* Source/WebCore/animation/CSSPropertyAnimation.cpp:
(WebCore::blendStandardProperty):
* Source/WebCore/animation/WebAnimationTypes.h:
* Source/WebCore/platform/animation/AcceleratedEffect.cpp:
(WebCore::blend):
(WebCore::AcceleratedEffect::apply):
(WebCore::AcceleratedEffect::animatesTransformRelatedProperty const):
* Source/WebCore/platform/animation/AcceleratedEffectValues.cpp:
(WebCore::AcceleratedEffectValues::AcceleratedEffectValues):
(WebCore::AcceleratedEffectValues::clone const):
(WebCore::AcceleratedEffectValues::computedTransformationMatrix const):
* Source/WebCore/platform/animation/AcceleratedEffectValues.h:
(WebCore::AcceleratedEffectValues::AcceleratedEffectValues):
* Source/WebCore/platform/animation/AnimationUtilities.h:
(WebCore::BlendingContext::normalizeProgress):
* Source/WebCore/rendering/MotionPath.cpp:
(WebCore::MotionPath::applyMotionPathTransform):
* Source/WebCore/rendering/MotionPath.h:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAcceleratedEffectsAndBaseValues):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

Canonical link: https://commits.webkit.org/274803@main




More information about the webkit-changes mailing list