RESOLVED FIXED230753
REGRESSION (r276370): Elements with animated transform property might not properly rendered
https://bugs.webkit.org/show_bug.cgi?id=230753
Summary REGRESSION (r276370): Elements with animated transform property might not pro...
Roland Soos
Reported 2021-09-24 09:02:27 PDT
Created attachment 439152 [details] iPhone 11 IOS 15.0 This issue affects only Safari 15. Steps to reproduce: 1. Open https://smartslider3.com/carousel-with-lightbox/ 2. On the top slider (coffee content) Change slides with the arrow on desktop or swipe on mobile Result in Safari 15: some part of the images stay rendered on the screen while it should not.
Attachments
iPhone 11 IOS 15.0 (781.20 KB, video/quicktime)
2021-09-24 09:02 PDT, Roland Soos
no flags
Reduced testcase (1.89 KB, text/html)
2021-10-14 17:45 PDT, Simon Fraser (smfr)
no flags
Patch (4.48 KB, patch)
2021-10-14 21:17 PDT, Simon Fraser (smfr)
no flags
Simon Fraser (smfr)
Comment 1 2021-09-24 10:00:28 PDT
I can reproduce on macOS too.
Radar WebKit Bug Importer
Comment 2 2021-09-24 10:01:30 PDT
Simon Fraser (smfr)
Comment 3 2021-09-24 10:40:09 PDT
Roland Soos
Comment 4 2021-09-27 01:10:53 PDT
The problem is related to the fact that we are animating the .n2-ss-slider-pipeline element's transform-> translate() value. When we switch it to translate3d() there is no problem during the animation. I will fix this on our main site, but as a reference, I made a static page which produce the error: https://smartslider3.com/bugs/webkit/animatedtransform/
Simon Fraser (smfr)
Comment 5 2021-10-13 15:55:43 PDT
This reproduces in MiniBrowser if you use the Safari user agent. Seems like the content is UA-sniffing.
Simon Fraser (smfr)
Comment 6 2021-10-14 17:45:31 PDT
Created attachment 441314 [details] Reduced testcase
Simon Fraser (smfr)
Comment 7 2021-10-14 18:58:01 PDT
The problem occurs at the computation of the outlineBoundsForRepaint in RenderLayer::computeRepaintRects() using the geometry map.
Simon Fraser (smfr)
Comment 8 2021-10-14 19:04:56 PDT
The logic in https://trac.webkit.org/changeset/276370/webkit is wrong. In this content, the element has transform and preserves-3d, so: if (current->hasTransformRelatedProperty() && !current->style().preserves3D()) return false; does not return, so it incorrectly uses the geometry map when there is a transform.
Simon Fraser (smfr)
Comment 9 2021-10-14 21:17:34 PDT
Myles C. Maxfield
Comment 10 2021-10-14 21:24:50 PDT
Comment on attachment 441329 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=441329&action=review > Source/WebCore/rendering/RenderGeometryMap.cpp:153 > + if (current->hasTransformRelatedProperty() && (style.hasTransform() || style.translate() || style.scale() || style.rotate() || style.hasPerspective())) Surely there’s a more direct way of representing this condition?
EWS
Comment 11 2021-10-15 08:26:05 PDT
Committed r284247 (243056@main): <https://commits.webkit.org/243056@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 441329 [details].
Note You need to log in before you can comment on or make changes to this bug.