Title: [210636] branches/safari-603-branch/Source/WebCore
Revision
210636
Author
[email protected]
Date
2017-01-12 08:44:46 -0800 (Thu, 12 Jan 2017)

Log Message

Merge r210094. rdar://problem/29912214

Modified Paths

Diff

Modified: branches/safari-603-branch/Source/WebCore/ChangeLog (210635 => 210636)


--- branches/safari-603-branch/Source/WebCore/ChangeLog	2017-01-12 16:44:44 UTC (rev 210635)
+++ branches/safari-603-branch/Source/WebCore/ChangeLog	2017-01-12 16:44:46 UTC (rev 210636)
@@ -1,5 +1,29 @@
 2017-01-12  Matthew Hanson  <[email protected]>
 
+        Merge r210094. rdar://problem/29912214
+
+    2016-12-21  Tim Horton  <[email protected]>
+
+            TileGrid creates new tiles when there are recyclable tiles about to be removed
+            https://bugs.webkit.org/show_bug.cgi?id=166408
+
+            Reviewed by Simon Fraser.
+
+            No new tests; existing tests cover this code, this is just a perf win,
+            specifically reducing the amount of layer churn during zooming.
+
+            * platform/graphics/ca/TileGrid.cpp:
+            (WebCore::TileGrid::revalidateTiles):
+            Remove all the tiles that will be removed first, then add new tiles.
+            Strictly ordering it this way means that tiles will be removed, go into
+            the LayerPool, then be pulled back out of the LayerPool to sit in the
+            newly-covered areas. Previously, we would sometimes make new layers
+            for newly-covered areas, and then remove unneeded but otherwise recyclable
+            tiles, which would then just go sit in the LayerPool (and often get
+            pruned, wastefully).
+
+2017-01-12  Matthew Hanson  <[email protected]>
+
         Merge r210078. rdar://problem/29633667
 
     2016-12-21  Ryosuke Niwa  <[email protected]>

Modified: branches/safari-603-branch/Source/WebCore/platform/graphics/ca/TileGrid.cpp (210635 => 210636)


--- branches/safari-603-branch/Source/WebCore/platform/graphics/ca/TileGrid.cpp	2017-01-12 16:44:44 UTC (rev 210635)
+++ branches/safari-603-branch/Source/WebCore/platform/graphics/ca/TileGrid.cpp	2017-01-12 16:44:46 UTC (rev 210636)
@@ -406,19 +406,9 @@
             removeTilesInCohort(currCohort);
     }
 
-    // Ensure primary tile coverage tiles.
-    m_primaryTileCoverageRect = ensureTilesForRect(coverageRect, CoverageType::PrimaryTiles);
-
     if (validationPolicy & PruneSecondaryTiles) {
         removeAllSecondaryTiles();
         m_cohortList.clear();
-    } else {
-        for (auto& secondaryCoverageRect : m_secondaryTileCoverageRects) {
-            FloatRect secondaryRectInLayerCoordinates(secondaryCoverageRect);
-            secondaryRectInLayerCoordinates.scale(1 / m_scale);
-            ensureTilesForRect(secondaryRectInLayerCoordinates, CoverageType::SecondaryTiles);
-        }
-        m_secondaryTileCoverageRects.clear();
     }
 
     if (m_controller.unparentsOffscreenTiles() && (validationPolicy & UnparentAllTiles)) {
@@ -465,6 +455,19 @@
         }
     }
 
+    // Ensure primary tile coverage tiles.
+    m_primaryTileCoverageRect = ensureTilesForRect(coverageRect, CoverageType::PrimaryTiles);
+
+    // Ensure secondary tiles (requested via prepopulateRect).
+    if (!(validationPolicy & PruneSecondaryTiles)) {
+        for (auto& secondaryCoverageRect : m_secondaryTileCoverageRects) {
+            FloatRect secondaryRectInLayerCoordinates(secondaryCoverageRect);
+            secondaryRectInLayerCoordinates.scale(1 / m_scale);
+            ensureTilesForRect(secondaryRectInLayerCoordinates, CoverageType::SecondaryTiles);
+        }
+        m_secondaryTileCoverageRects.clear();
+    }
+
     m_controller.didRevalidateTiles();
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to