Title: [249120] trunk/Source/WebCore
- Revision
- 249120
- Author
- simon.fra...@apple.com
- Date
- 2019-08-26 15:21:38 -0700 (Mon, 26 Aug 2019)
Log Message
Optimize computation of AbsoluteClipRects clip rects
https://bugs.webkit.org/show_bug.cgi?id=201148
Reviewed by Zalan Bujtas.
When adding layers to the compositing overlap map, we compute AbsoluteClipRects for every
layer which is expensive. This was more expensive than necessary because we converted them
to TemporaryClipRects when crossing painting boundaries, but AbsoluteClipRects don't
care about painting boundaries, so don't do this.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (249119 => 249120)
--- trunk/Source/WebCore/ChangeLog 2019-08-26 22:16:25 UTC (rev 249119)
+++ trunk/Source/WebCore/ChangeLog 2019-08-26 22:21:38 UTC (rev 249120)
@@ -1,3 +1,18 @@
+2019-08-26 Simon Fraser <simon.fra...@apple.com>
+
+ Optimize computation of AbsoluteClipRects clip rects
+ https://bugs.webkit.org/show_bug.cgi?id=201148
+
+ Reviewed by Zalan Bujtas.
+
+ When adding layers to the compositing overlap map, we compute AbsoluteClipRects for every
+ layer which is expensive. This was more expensive than necessary because we converted them
+ to TemporaryClipRects when crossing painting boundaries, but AbsoluteClipRects don't
+ care about painting boundaries, so don't do this.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::calculateClipRects const):
+
2019-08-26 Chris Dumez <cdu...@apple.com>
Drop WEBCORE_EXPORT from ChromeClient class
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (249119 => 249120)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2019-08-26 22:16:25 UTC (rev 249119)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2019-08-26 22:21:38 UTC (rev 249120)
@@ -5631,7 +5631,7 @@
ClipRectsContext parentContext(clipRectsContext);
parentContext.overlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize; // FIXME: why?
- if (parentContext.clipRectsType != TemporaryClipRects && clipCrossesPaintingBoundary())
+ if ((parentContext.clipRectsType != TemporaryClipRects && parentContext.clipRectsType != AbsoluteClipRects) && clipCrossesPaintingBoundary())
parentContext.clipRectsType = TemporaryClipRects;
parentLayer->calculateClipRects(parentContext, clipRects);
@@ -5697,7 +5697,7 @@
if (clipRectsContext.clipRectsType == TemporaryClipRects)
return temporaryParentClipRects(clipRectsContext);
- if (clipCrossesPaintingBoundary()) {
+ if (clipRectsContext.clipRectsType != AbsoluteClipRects && clipCrossesPaintingBoundary()) {
ClipRectsContext tempClipRectsContext(clipRectsContext);
tempClipRectsContext.clipRectsType = TemporaryClipRects;
return temporaryParentClipRects(tempClipRectsContext);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes