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

Side by Side Diff: Source/platform/graphics/paint/DisplayItemList.cpp

Issue 1287093004: Slimming Paint phase 2 compositing algorithm plumbing (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase from space Created 5 years, 4 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 unified diff | Download patch
« no previous file with comments | « Source/platform/graphics/paint/DisplayItemList.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "platform/graphics/paint/DisplayItemList.h" 6 #include "platform/graphics/paint/DisplayItemList.h"
7 7
8 #include "platform/NotImplemented.h" 8 #include "platform/NotImplemented.h"
9 #include "platform/RuntimeEnabledFeatures.h" 9 #include "platform/RuntimeEnabledFeatures.h"
10 #include "platform/TraceEvent.h" 10 #include "platform/TraceEvent.h"
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 // Update the existing display items by removing invalidated entries, updating 216 // Update the existing display items by removing invalidated entries, updating
217 // repainted ones, and appending new items. 217 // repainted ones, and appending new items.
218 // - For CachedDisplayItem, copy the corresponding cached DrawingDisplayItem; 218 // - For CachedDisplayItem, copy the corresponding cached DrawingDisplayItem;
219 // - For SubtreeCachedDisplayItem, copy the cached display items between the 219 // - For SubtreeCachedDisplayItem, copy the cached display items between the
220 // corresponding BeginSubtreeDisplayItem and EndSubtreeDisplayItem (incl.); 220 // corresponding BeginSubtreeDisplayItem and EndSubtreeDisplayItem (incl.);
221 // - Otherwise, copy the new display item. 221 // - Otherwise, copy the new display item.
222 // 222 //
223 // The algorithm is O(|m_currentDisplayItems| + |m_newDisplayItems|). 223 // The algorithm is O(|m_currentDisplayItems| + |m_newDisplayItems|).
224 // Coefficients are related to the ratio of out-of-order [Subtree]CachedDisplayI tems 224 // Coefficients are related to the ratio of out-of-order [Subtree]CachedDisplayI tems
225 // and the average number of (Drawing|BeginSubtree)DisplayItems per client. 225 // and the average number of (Drawing|BeginSubtree)DisplayItems per client.
226 void DisplayItemList::commitNewDisplayItems() 226 //
227 // TODO(pdr): Implement the DisplayListDiff algorithm for SlimmingPaintV2.
228 void DisplayItemList::commitNewDisplayItems(DisplayListDiff*)
227 { 229 {
228 TRACE_EVENT2("blink,benchmark", "DisplayItemList::commitNewDisplayItems", "c urrent_display_list_size", (int)m_currentDisplayItems.size(), 230 TRACE_EVENT2("blink,benchmark", "DisplayItemList::commitNewDisplayItems", "c urrent_display_list_size", (int)m_currentDisplayItems.size(),
229 "num_non_cached_new_items", (int)m_newDisplayItems.size() - m_numCachedI tems); 231 "num_non_cached_new_items", (int)m_newDisplayItems.size() - m_numCachedI tems);
230 232
231 // These data structures are used during painting only. 233 // These data structures are used during painting only.
232 ASSERT(m_scopeStack.isEmpty()); 234 ASSERT(m_scopeStack.isEmpty());
233 m_scopeStack.clear(); 235 m_scopeStack.clear();
234 m_nextScope = 1; 236 m_nextScope = 1;
235 ASSERT(!skippingCache()); 237 ASSERT(!skippingCache());
236 #if ENABLE(ASSERT) 238 #if ENABLE(ASSERT)
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 DisplayItemClient lastClient = nullptr; 376 DisplayItemClient lastClient = nullptr;
375 for (const DisplayItem& displayItem : m_currentDisplayItems) { 377 for (const DisplayItem& displayItem : m_currentDisplayItems) {
376 if (displayItem.client() == lastClient) 378 if (displayItem.client() == lastClient)
377 continue; 379 continue;
378 lastClient = displayItem.client(); 380 lastClient = displayItem.client();
379 if (!displayItem.skippedCache()) 381 if (!displayItem.skippedCache())
380 m_validlyCachedClients.add(lastClient); 382 m_validlyCachedClients.add(lastClient);
381 } 383 }
382 } 384 }
383 385
386 void DisplayItemList::appendToWebDisplayItemList(WebDisplayItemList* list)
387 {
388 for (const DisplayItem& item : m_currentDisplayItems)
389 item.appendToWebDisplayItemList(list);
390 }
391
384 void DisplayItemList::commitNewDisplayItemsAndAppendToWebDisplayItemList(WebDisp layItemList* list) 392 void DisplayItemList::commitNewDisplayItemsAndAppendToWebDisplayItemList(WebDisp layItemList* list)
385 { 393 {
386 commitNewDisplayItems(); 394 commitNewDisplayItems();
387 for (const DisplayItem& item : m_currentDisplayItems) 395 appendToWebDisplayItemList(list);
388 item.appendToWebDisplayItemList(list);
389 } 396 }
390 397
391 #if ENABLE(ASSERT) 398 #if ENABLE(ASSERT)
392 399
393 static void showUnderInvalidationError(const char* reason, const DisplayItem& di splayItem) 400 static void showUnderInvalidationError(const char* reason, const DisplayItem& di splayItem)
394 { 401 {
395 #ifndef NDEBUG 402 #ifndef NDEBUG
396 WTFLogAlways("%s: %s\nSee http://crbug.com/450725.", reason, displayItem.asD ebugString().utf8().data()); 403 WTFLogAlways("%s: %s\nSee http://crbug.com/450725.", reason, displayItem.asD ebugString().utf8().data());
397 #else 404 #else
398 WTFLogAlways("%s. Run debug build to get more details\nSee http://crbug.com/ 450725.", reason); 405 WTFLogAlways("%s. Run debug build to get more details\nSee http://crbug.com/ 450725.", reason);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 538
532 void DisplayItemList::replay(GraphicsContext& context) 539 void DisplayItemList::replay(GraphicsContext& context)
533 { 540 {
534 TRACE_EVENT0("blink,benchmark", "DisplayItemList::replay"); 541 TRACE_EVENT0("blink,benchmark", "DisplayItemList::replay");
535 ASSERT(m_newDisplayItems.isEmpty()); 542 ASSERT(m_newDisplayItems.isEmpty());
536 for (DisplayItem& displayItem : m_currentDisplayItems) 543 for (DisplayItem& displayItem : m_currentDisplayItems)
537 displayItem.replay(context); 544 displayItem.replay(context);
538 } 545 }
539 546
540 } // namespace blink 547 } // namespace blink
OLDNEW
« no previous file with comments | « Source/platform/graphics/paint/DisplayItemList.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698