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