Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Unified Diff: third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp

Issue 1379883003: Create PaintChunk and begin writing code to build paint chunks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: enable RuntimeEnabledFeature for PaintChunkerTest Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp
index 706927c1563d4532d93a775f2b695c972d734940..e685909b45418e5638c126238d817f2ce002e9b0 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp
+++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.cpp
@@ -24,6 +24,12 @@ const DisplayItems& DisplayItemList::displayItems() const
return m_currentDisplayItems;
}
+const Vector<PaintChunk>& DisplayItemList::paintChunks() const
+{
+ ASSERT(m_newPaintChunks.isInInitialState());
+ return m_currentPaintChunks;
+}
+
bool DisplayItemList::lastDisplayItemIsNoopBegin() const
{
if (m_newDisplayItems.isEmpty())
@@ -48,6 +54,9 @@ void DisplayItemList::removeLastDisplayItem()
}
#endif
m_newDisplayItems.removeLast();
+
+ if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
+ m_newPaintChunks.decrementDisplayItemIndex();
}
void DisplayItemList::processNewItem(DisplayItem& displayItem)
@@ -85,6 +94,14 @@ void DisplayItemList::processNewItem(DisplayItem& displayItem)
if (skippingCache())
displayItem.setSkippedCache();
+
+ if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
+ m_newPaintChunks.incrementDisplayItemIndex();
+}
+
+void DisplayItemList::updateCurrentPaintProperties(const PaintProperties& newPaintProperties)
+{
+ m_newPaintChunks.updateCurrentPaintProperties(newPaintProperties);
}
void DisplayItemList::beginScope()
@@ -287,6 +304,7 @@ void DisplayItemList::commitNewDisplayItems(GraphicsLayer* graphicsLayer)
ASSERT(!item.isCached());
#endif
m_currentDisplayItems.swap(m_newDisplayItems);
+ m_currentPaintChunks = m_newPaintChunks.releasePaintChunks();
m_validlyCachedClientsDirty = true;
m_numCachedItems = 0;
return;
@@ -303,6 +321,7 @@ void DisplayItemList::commitNewDisplayItems(GraphicsLayer* graphicsLayer)
// TODO(jbroman): Consider revisiting this heuristic.
DisplayItems updatedList(std::max(m_currentDisplayItems.usedCapacityInBytes(), m_newDisplayItems.usedCapacityInBytes()));
+ Vector<PaintChunk> updatedPaintChunks;
DisplayItems::iterator currentIt = m_currentDisplayItems.begin();
DisplayItems::iterator currentEnd = m_currentDisplayItems.end();
for (DisplayItems::iterator newIt = m_newDisplayItems.begin(); newIt != m_newDisplayItems.end(); ++newIt) {
@@ -365,6 +384,10 @@ void DisplayItemList::commitNewDisplayItems(GraphicsLayer* graphicsLayer)
checkNoRemainingCachedDisplayItems();
#endif // ENABLE(ASSERT)
+ // TODO(jbroman): When subsequence caching applies to SPv2, we'll need to
+ // merge the paint chunks as well.
+ m_currentPaintChunks = m_newPaintChunks.releasePaintChunks();
+
m_newDisplayItems.clear();
m_validlyCachedClientsDirty = true;
m_currentDisplayItems.swap(updatedList);

Powered by Google App Engine
This is Rietveld 408576698