Title: [237942] trunk
Revision
237942
Author
simon.fra...@apple.com
Date
2018-11-07 13:46:19 -0800 (Wed, 07 Nov 2018)

Log Message

Some WK1 repaint tests are flakey
https://bugs.webkit.org/show_bug.cgi?id=190627

Reviewed by Zalan Bujtas.
Source/WebCore:

Repaint tracking in GraphicsLayerCA was sensitive to whether there were already dirty
rects on the layer, since tracking happened after checks against existing dirty rects.
This caused some WK1 repaint tests to be flakey, since there's no guarantee that
no repaints happen between the last layer flush and a test calling startTrackingRepaints().

Fix by moving the repaint tracking to before the checks against existing dirty rects.
This is more similar to how repaint tracking on FrameView works.

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::setNeedsDisplayInRect):

LayoutTests:

New baseline.

* compositing/masks/compositing-clip-path-change-no-repaint-expected.txt:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (237941 => 237942)


--- trunk/LayoutTests/ChangeLog	2018-11-07 21:23:34 UTC (rev 237941)
+++ trunk/LayoutTests/ChangeLog	2018-11-07 21:46:19 UTC (rev 237942)
@@ -1,3 +1,14 @@
+2018-11-07  Simon Fraser  <simon.fra...@apple.com>
+
+        Some WK1 repaint tests are flakey
+        https://bugs.webkit.org/show_bug.cgi?id=190627
+
+        Reviewed by Zalan Bujtas.
+        
+        New baseline.
+
+        * compositing/masks/compositing-clip-path-change-no-repaint-expected.txt:
+
 2018-11-07  Ross Kirsling  <ross.kirsl...@sony.com>
 
         [WinCairo] Unreviewed layout test gardening.

Modified: trunk/LayoutTests/compositing/masks/compositing-clip-path-change-no-repaint-expected.txt (237941 => 237942)


--- trunk/LayoutTests/compositing/masks/compositing-clip-path-change-no-repaint-expected.txt	2018-11-07 21:23:34 UTC (rev 237941)
+++ trunk/LayoutTests/compositing/masks/compositing-clip-path-change-no-repaint-expected.txt	2018-11-07 21:46:19 UTC (rev 237942)
@@ -29,10 +29,14 @@
               (drawsContent 1)
               (repaint rects
                 (rect 0.00 0.00 300.00 300.00)
+                (rect 0.00 0.00 300.00 300.00)
+                (rect 0.00 0.00 300.00 300.00)
               )
             )
           (repaint rects
             (rect 0.00 0.00 300.00 300.00)
+            (rect 0.00 0.00 300.00 300.00)
+            (rect 0.00 0.00 300.00 300.00)
           )
         )
       )

Modified: trunk/LayoutTests/platform/ios-wk2/compositing/columns/composited-lr-paginated-repaint-expected.txt (237941 => 237942)


--- trunk/LayoutTests/platform/ios-wk2/compositing/columns/composited-lr-paginated-repaint-expected.txt	2018-11-07 21:23:34 UTC (rev 237941)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/columns/composited-lr-paginated-repaint-expected.txt	2018-11-07 21:46:19 UTC (rev 237942)
@@ -13,6 +13,8 @@
           (drawsContent 1)
           (repaint rects
             (rect 27.00 25.00 52.00 77.00)
+            (rect 27.00 25.00 52.00 77.00)
+            (rect 27.00 25.00 52.00 77.00)
           )
         )
       )

Modified: trunk/LayoutTests/platform/ios-wk2/compositing/columns/composited-rl-paginated-repaint-expected.txt (237941 => 237942)


--- trunk/LayoutTests/platform/ios-wk2/compositing/columns/composited-rl-paginated-repaint-expected.txt	2018-11-07 21:23:34 UTC (rev 237941)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/columns/composited-rl-paginated-repaint-expected.txt	2018-11-07 21:46:19 UTC (rev 237942)
@@ -15,6 +15,8 @@
           (drawsContent 1)
           (repaint rects
             (rect 27.00 25.00 52.00 77.00)
+            (rect 27.00 25.00 52.00 77.00)
+            (rect 27.00 25.00 52.00 77.00)
           )
         )
       )

Added: trunk/LayoutTests/platform/ios-wk2/compositing/repaint/repaint-on-layer-grouping-change-expected.txt (0 => 237942)


--- trunk/LayoutTests/platform/ios-wk2/compositing/repaint/repaint-on-layer-grouping-change-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/repaint/repaint-on-layer-grouping-change-expected.txt	2018-11-07 21:46:19 UTC (rev 237942)
@@ -0,0 +1,37 @@
+
+(GraphicsLayer
+  (anchor 0.00 0.00)
+  (bounds 800.00 600.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 600.00)
+      (contentsOpaque 1)
+      (children 2
+        (GraphicsLayer
+          (offsetFromRenderer width=10 height=10)
+          (position 10.00 10.00)
+          (anchor -0.02 -0.04)
+          (bounds 540.00 240.00)
+          (drawsContent 1)
+          (repaint rects
+            (rect 0.00 0.00 540.00 240.00)
+          )
+        )
+        (GraphicsLayer
+          (offsetFromRenderer width=10 height=10)
+          (position 10.00 260.00)
+          (anchor -0.20 -0.20)
+          (bounds 50.00 50.00)
+          (contentsOpaque 1)
+          (drawsContent 1)
+          (repaint rects
+            (rect 490.00 190.00 50.00 50.00)
+            (rect 490.00 190.00 50.00 50.00)
+            (rect 0.00 0.00 50.00 50.00)
+          )
+        )
+      )
+    )
+  )
+)
+

Modified: trunk/Source/WebCore/ChangeLog (237941 => 237942)


--- trunk/Source/WebCore/ChangeLog	2018-11-07 21:23:34 UTC (rev 237941)
+++ trunk/Source/WebCore/ChangeLog	2018-11-07 21:46:19 UTC (rev 237942)
@@ -1,3 +1,21 @@
+2018-11-07  Simon Fraser  <simon.fra...@apple.com>
+
+        Some WK1 repaint tests are flakey
+        https://bugs.webkit.org/show_bug.cgi?id=190627
+
+        Reviewed by Zalan Bujtas.
+
+        Repaint tracking in GraphicsLayerCA was sensitive to whether there were already dirty
+        rects on the layer, since tracking happened after checks against existing dirty rects.
+        This caused some WK1 repaint tests to be flakey, since there's no guarantee that
+        no repaints happen between the last layer flush and a test calling startTrackingRepaints().
+
+        Fix by moving the repaint tracking to before the checks against existing dirty rects.
+        This is more similar to how repaint tracking on FrameView works.
+
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::setNeedsDisplayInRect):
+
 2018-11-07  Dean Jackson  <d...@apple.com>
 
         [iOS] WebGL leaks exact GPU type

Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (237941 => 237942)


--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2018-11-07 21:23:34 UTC (rev 237941)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2018-11-07 21:46:19 UTC (rev 237942)
@@ -911,14 +911,16 @@
 
     if (rect.isEmpty())
         return;
-    
+
+    addRepaintRect(rect);
+
     const size_t maxDirtyRects = 32;
-    
+
     for (size_t i = 0; i < m_dirtyRects.size(); ++i) {
         if (m_dirtyRects[i].contains(rect))
             return;
     }
-    
+
     if (m_dirtyRects.size() < maxDirtyRects)
         m_dirtyRects.append(rect);
     else
@@ -925,8 +927,6 @@
         m_dirtyRects[0].unite(rect);
 
     noteLayerPropertyChanged(DirtyRectsChanged);
-
-    addRepaintRect(rect);
 }
 
 void GraphicsLayerCA::setContentsNeedsDisplay()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to