Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 9d57f1f6519a812dda9dbb476a24ce8ed73c976c https://github.com/WebKit/WebKit/commit/9d57f1f6519a812dda9dbb476a24ce8ed73c976c Author: Antoine Quint <grao...@webkit.org> Date: 2024-03-06 (Wed, 06 Mar 2024)
Changed paths: M LayoutTests/platform/glib/TestExpectations A LayoutTests/webanimations/accelerated-animation-immediate-prevetion-direction-reverse-expected.txt A LayoutTests/webanimations/accelerated-animation-immediate-prevetion-direction-reverse.html M Source/WebCore/animation/KeyframeEffect.cpp M Source/WebCore/animation/KeyframeEffect.h M Source/WebCore/animation/KeyframeEffectStack.cpp Log Message: ----------- REGRESSION (iOS 17): Animation flicker with multiple accelerated animations and direction change https://bugs.webkit.org/show_bug.cgi?id=263996 rdar://117815004 Reviewed by Dean Jackson. While we have a mechanism to deal with changes in ability to accelerate effects based on logic ran at the KeyframeEffect level (see `KeyframeEffect::canBeAccelerated()`) we do not have anything specific in place to deal with the inability to accelerate effects at the GraphicsLayerCA level. In the case of reversed animations, or any playback rate other than 1, we reject acceleration in GraphicsLayerCA in the static function `animationCanBeAccelerated()`. This happens while accelerated actions are applied throughout a keyframe effect stack. With the existing system in place, this would result in preventing acceleration in the next animation frame. This bug showed this with animations being in an incorrect state for one single frame. We now check in `KeyframeEffectStack::applyPendingAcceleratedActions()` whether the application of pending accelerated actions resulted in an effect preventing acceleration of the effect stack and now immediately stop all effects in that stack. The newly added test would reliably fail prior to this patch. * LayoutTests/platform/glib/TestExpectations: * LayoutTests/webanimations/accelerated-animation-immediate-prevetion-direction-reverse-expected.txt: Added. * LayoutTests/webanimations/accelerated-animation-immediate-prevetion-direction-reverse.html: Added. * Source/WebCore/animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::effectStackNoLongerAllowsAccelerationDuringAcceleratedActionApplication): * Source/WebCore/animation/KeyframeEffect.h: * Source/WebCore/animation/KeyframeEffectStack.cpp: (WebCore::KeyframeEffectStack::applyPendingAcceleratedActions const): Canonical link: https://commits.webkit.org/275773@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