NEW 221788
clip-path does not update dynamically when svg path changes if using GPU rendering
https://bugs.webkit.org/show_bug.cgi?id=221788
Summary clip-path does not update dynamically when svg path changes if using GPU rend...
Jonathan Deutsch
Reported 2021-02-11 17:20:19 PST
Created attachment 420072 [details] Reproduction document If a CSS clip-path is set to an element that uses a SVG id, changing the "d" component does not update the clip path immediately when the element uses GPU acceleration (via transform:rotateY(0deg). If you resize the window or do something to force redrawing, it will show up correctly. Not using GPU rendering also will make this work. It is not a problem on Chrome/Firefox. I've attached a reproduction case. Click the shape to get the clip path to change. After clicking, do something like resize the window and you'll see it change then. This affects content made with Tumult Hype [https://tumult.com/hype/].
Attachments
Reproduction document (936 bytes, text/html)
2021-02-11 17:20 PST, Jonathan Deutsch
no flags
reduced test case (878 bytes, text/html)
2021-02-11 19:48 PST, Said Abou-Hallawa
no flags
Said Abou-Hallawa
Comment 1 2021-02-11 19:48:31 PST
Created attachment 420082 [details] reduced test case I think the problem is not related to GPU acceleration or the compositing. I am attaching a reduced test case which does not include any compositing. I think the problem is when the CSS of an element references an SVG "clip-path", the renderer of this element is not registered as client of the RenderSVGResourceContainer of SVG "clip-path". This is already done for any SVG element which references the same SVG "clip-path" but it is not done for any other non SVG element. When the SVG "clip-path" changes, its renderer 'RenderSVGResourceContainer' invalidates all the clients in RenderSVGResourceContainer::markAllClientsForInvalidation().
Jonathan Deutsch
Comment 2 2021-02-11 20:33:39 PST
Yes - it looks like you are correct. Removal of the rotateY(0deg) from my example leads to different behavior that lead me to think it was the culprit, but with some additional testing I can see there are ways it still is wrong with that. Your example easily repros it.
Radar WebKit Bug Importer
Comment 3 2021-02-18 17:21:13 PST
Note You need to log in before you can comment on or make changes to this bug.