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

Reply via email to