Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c31a0356b67ea73b401b95a0062ea2d393003de9
https://github.com/WebKit/WebKit/commit/c31a0356b67ea73b401b95a0062ea2d393003de9
Author: Antoine Quint <[email protected]>
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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes