Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e9e959922d195e8daa40a74c08f00fe06a615206 https://github.com/WebKit/WebKit/commit/e9e959922d195e8daa40a74c08f00fe06a615206 Author: Antoine Quint <grao...@webkit.org> Date: 2024-03-09 (Sat, 09 Mar 2024)
Changed paths: M LayoutTests/platform/glib/TestExpectations M LayoutTests/webanimations/accelerated-animations-and-composite-expected.txt M LayoutTests/webanimations/accelerated-animations-and-composite.html A LayoutTests/webanimations/accelerated-animations-and-implicit-keyframes-expected.txt A LayoutTests/webanimations/accelerated-animations-and-implicit-keyframes.html M Source/WebCore/animation/BlendingKeyframes.cpp M Source/WebCore/animation/BlendingKeyframes.h M Source/WebCore/animation/KeyframeEffect.cpp M Source/WebCore/animation/KeyframeEffect.h M Source/WebCore/animation/KeyframeEffectStack.cpp Log Message: ----------- [web-animations] composed keyframe animation behaves differently in Webkit than Firefox and Chrome https://bugs.webkit.org/show_bug.cgi?id=269858 rdar://123777133 Reviewed by Dean Jackson. The reported broken content for this bug used two animations targeting an accelerated property (`transform`) and using an implicit keyframe in both cases. When we encounter an accelerated animation with an implicit keyframe, we resolve the implicit keyframes using the underlying style. In this case, this breaks the content because the underlying style should be used only for the first of the two `transform` animations, and the second animation ought to use the output of the first animation to use as its underlying value. Since that values will change for each animation frame, we have to not run accelerated animations in this particular instance. So we now analyze the effect stack in `KeyframeEffectStack::allowsAcceleration()` for a case where an effect targets an accelerated property using an implicit keyframe when an effect lower down the stack is already animating that property. If we find this to be the case, we disable acceleration throughout the stack. Note that with threaded animation resolution, we are able to run this same scenario in the animation thread because we correctly resolve an effect stack with implicit keyframes no matter the configuration. The code path modified by this patch is not exercised when threaded animation resolution is enabled. We add a new test devoted to testing implicit keyframes for accelerated properties and modify the existing test for the `composite` property and acceleration to not contain implicit keyframes. * LayoutTests/platform/glib/TestExpectations: * LayoutTests/webanimations/accelerated-animations-and-composite-expected.txt: * LayoutTests/webanimations/accelerated-animations-and-composite.html: * LayoutTests/webanimations/accelerated-animations-and-implicit-keyframes-expected.txt: Added. * LayoutTests/webanimations/accelerated-animations-and-implicit-keyframes.html: Added. * Source/WebCore/animation/BlendingKeyframes.cpp: (WebCore::BlendingKeyframes::hasImplicitKeyframeForProperty const): (WebCore::BlendingKeyframes::analyzeKeyframe): * Source/WebCore/animation/BlendingKeyframes.h: * Source/WebCore/animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::setBlendingKeyframes): (WebCore::KeyframeEffect::analyzeAcceleratedProperties): * Source/WebCore/animation/KeyframeEffect.h: * Source/WebCore/animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::allowsAcceleration const): Canonical link: https://commits.webkit.org/275887@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes