Bug 219829 - REGRESSION (r259137): Clip-path rendering regression when element contains transformed child
Summary: REGRESSION (r259137): Clip-path rendering regression when element contains tr...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: Safari Technology Preview
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Simon Fraser (smfr)
URL:
Keywords: InRadar
: 215458 (view as bug list)
Depends on:
Blocks:
 
Reported: 2020-12-12 13:43 PST by Simon Fraser (smfr)
Modified: 2020-12-15 10:17 PST (History)
12 users (show)

See Also:


Attachments
Testcase (1.78 KB, text/html)
2020-12-12 13:43 PST, Simon Fraser (smfr)
no flags Details
Patch (8.08 KB, patch)
2020-12-12 14:43 PST, Simon Fraser (smfr)
sabouhallawa: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Simon Fraser (smfr) 2020-12-12 13:43:56 PST
Created attachment 416107 [details]
Testcase

r259137 broke clip-path rendering in some cases.
Comment 1 Simon Fraser (smfr) 2020-12-12 13:44:13 PST
<rdar://problem/66308088>
Comment 2 Simon Fraser (smfr) 2020-12-12 14:43:59 PST
Created attachment 416110 [details]
Patch
Comment 3 Alexey Proskuryakov 2020-12-12 17:00:31 PST
How is this different from bug 215458?
Comment 4 Simon Fraser (smfr) 2020-12-12 17:53:41 PST
*** Bug 215458 has been marked as a duplicate of this bug. ***
Comment 5 Said Abou-Hallawa 2020-12-14 12:03:48 PST
Comment on attachment 416110 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=416110&action=review

> Source/WebCore/rendering/RenderLayer.cpp:-4514
> -    if (!rootRelativeBounds)
> -        rootRelativeBounds = calculateLayerBounds(paintingInfo.rootLayer, offsetFromRoot, { });
> -

RenderLayer::setupFilters() has similar calculations. And it looks we used to call calculateLayerBounds() only once if both clip-path and filter are applied. Now we are going to call calculateLayerBounds() twice but with different arguments. Do we need to do the same changes in RenderLayer::setupFilters()? Do we need to remove the variable "Optional<LayoutRect> rootRelativeBounds;" from RenderLayer::paintLayerContents() since it won't be shared anymore between the clip-path and the filter.

> LayoutTests/css3/masking/clip-path-overflow-hidden-bounds-expected.html:22
> +			<path d="M0,0 L100,0 L100,100 L0,100 L0,0 z"/>

Weird indentation.

> LayoutTests/css3/masking/clip-path-overflow-hidden-bounds.html:29
> +			<path d="M0,0 L100,0 L100,100 L0,100 L0,0 z"/>

Ditto.
Comment 6 Simon Fraser (smfr) 2020-12-15 10:17:16 PST
https://trac.webkit.org/changeset/270850/webkit