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