Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c31a0356b67ea73b401b95a0062ea2d393003de9
      
https://github.com/WebKit/WebKit/commit/c31a0356b67ea73b401b95a0062ea2d393003de9
  Author: Antoine Quint <grao...@webkit.org>
  Date:   2024-02-05 (Mon, 05 Feb 2024)

  Changed paths:
    M Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h
    M Source/WebCore/platform/animation/AcceleratedEffect.cpp
    M Source/WebCore/platform/animation/AcceleratedEffect.h
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm

  Log Message:
  -----------
  [threaded-animation-resolution] add support for blending `opacity` values
https://bugs.webkit.org/show_bug.cgi?id=268738
rdar://122304627

Reviewed by Simon Fraser.

In order to add support for blending `opacity` values we make 
`AcceleratedEffect`
adopt the `KeyframeInterpolation::interpolateKeyframes()` method and its various
callbacks to deal with `AcceleratedEffect::Keyframe` values. We wrap this into
the new `AcceleratedEffect::apply()` method which is called from 
`RemoteAcceleratedEffectStack`
in the `computeValues()` method.

We compute the blended values in three different places in 
`RemoteAcceleratedEffectStack`.

When we resolve effects on the main thread (macOS) we have an 
`initEffectsFromScrollingThread()`
method to initialize the `CAPresentationModifier` objects which will apply the 
blended
values, and then on subsequent display updates we call 
`applyEffectsFromScrollingThread()`.

When we resolve effects on the scrolling thread (iOS) there is no 
initialization step
required and the single `applyEffectsFromScrollingThread()` method suffices.

Future patches will add support for the other transform-related and 
filter-related
accelerated properties.

* Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h:
* Source/WebCore/platform/animation/AcceleratedEffect.cpp:
(WebCore::blend):
(WebCore::AcceleratedEffect::apply):
* Source/WebCore/platform/animation/AcceleratedEffect.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm:
(WebKit::RemoteAcceleratedEffectStack::initEffectsFromScrollingThread):
(WebKit::RemoteAcceleratedEffectStack::applyEffectsFromScrollingThread const):
(WebKit::RemoteAcceleratedEffectStack::applyEffectsFromMainThread const):
(WebKit::RemoteAcceleratedEffectStack::computeValues const):
(WebKit::RemoteAcceleratedEffectStack::clear):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to