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