In certain situations Safari Technology Preview is not interpolating properly between 0 and 1turn in a keyframe animation. I noticed my loading spinner wasn't working anymore in Safari Technology Preview so I created a codepen to illustrate the bug: https://codepen.io/mattaningram/pen/zYROyqL If you uncomment the second spinner animation keyframe you will see that forcing Safari to interpolate to a 50% position in the 0 to 1 turn make the animation behave the way it does in older Safari versions and other browsers. However this behavior of not automatically interpolating between 0 and 1turn is not reproducible in a simpler example.
<rdar://problem/92872316>
Regressed with r289032, the fix for bug 235311. Cc'ing Martin Robinson, who wrote the regressing commit.
This seems to be an issue with CoreAnimation. I confirmed that the test case worked for WebKitGTK (which just animates using WebCore interpolation), but fails for hardware animations using the CoreAnimation backend.
Created attachment 459166 [details] Reduced test case using a single function for transform I suspect that this was an issue before, but was hidden by the fact that this animation was previously falling back to software. I've attached a reduced test case that fails in Mac WebKit and only uses a single transform function (ie should not be affected by my change).
It's perfectly fine to not run an accelerated animation for this case if we can't find a way to run it with CA, especially if that was our previous behavior.
(In reply to Antoine Quint from comment #5) > It's perfectly fine to not run an accelerated animation for this case if we > can't find a way to run it with CA, especially if that was our previous > behavior. It's quite possible this is indeed a regression, but I don't understand how yet. I'll do a deeper investigation.
Created attachment 459298 [details] Patch
Writing tests for the runtime behavior of an accelerated animation is notoriously difficult :(
I've posted what I think is a fix for this, but haven't yet marked it for review. I'm investigating now how to write a test. When pausing an animation (an approach that's often used for reference testing), I believe that WebKit uses the software path because rendering is correct without the fix.
Pull request: https://github.com/WebKit/WebKit/pull/781
Committed r294752 (250920@main): <https://commits.webkit.org/250920@main> Reviewed commits have been landed. Closing PR #781 and removing active labels.
This caused bug 243864.