[webkit-changes] [WebKit/WebKit] c421da: [threaded-animation-resolution] don't accelerate f...

Antoine Quint noreply at github.com
Fri Feb 16 14:05:45 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c421dabfa6f1f22869daa21a724ddf6f05d15061
      https://github.com/WebKit/WebKit/commit/c421dabfa6f1f22869daa21a724ddf6f05d15061
  Author: Antoine Quint <graouts at webkit.org>
  Date:   2024-02-16 (Fri, 16 Feb 2024)

  Changed paths:
    M Source/WebCore/platform/animation/AcceleratedEffect.cpp

  Log Message:
  -----------
  [threaded-animation-resolution] don't accelerate filter interpolation if a `drop-shadow()` operation is not last
https://bugs.webkit.org/show_bug.cgi?id=269591

Reviewed by Dean Jackson.

If a `filter` value is ever set on an animated target, we can only use accelerated interpolation if it contains a
`drop-shadow()` operation as its last operation. The reason we need to implement this constraint is because a
`CALayer` specifies drop shadow as a separate group of properties compared to other filters and is applied last.

We rewrite our keyframe lookup code to be more straightforward although possibly less efficient by using two separate
loops, one to create the list of relevant values for the animated filter property, and one to iterate over all values.
The previous code failed to handle some cases with implicit keyframes. As we iterate over the filter values, we now
find the longest list of filter operations and once we're done iterating, check that list for a `drop-shadow()` operation
and only validate the filter if it's last or absent.

* Source/WebCore/platform/animation/AcceleratedEffect.cpp:
(WebCore::AcceleratedEffect::validateFilters):

Canonical link: https://commits.webkit.org/274877@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list