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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/paint/PaintController.h

Issue 1552693002: Add paint testing mode subsequence_caching_disabled (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@RemoveSyncPaint
Patch Set: Rebase on origin/master Created 4 years, 11 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
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 #ifndef PaintController_h 5 #ifndef PaintController_h
6 #define PaintController_h 6 #define PaintController_h
7 7
8 #include "platform/PlatformExport.h" 8 #include "platform/PlatformExport.h"
9 #include "platform/RuntimeEnabledFeatures.h" 9 #include "platform/RuntimeEnabledFeatures.h"
10 #include "platform/geometry/IntRect.h" 10 #include "platform/geometry/IntRect.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 size_t approximateUnsharedMemoryUsage() const; 120 size_t approximateUnsharedMemoryUsage() const;
121 121
122 // Get the artifact generated after the last commit. 122 // Get the artifact generated after the last commit.
123 const PaintArtifact& paintArtifact() const; 123 const PaintArtifact& paintArtifact() const;
124 const DisplayItemList& displayItemList() const { return paintArtifact().disp layItemList(); } 124 const DisplayItemList& displayItemList() const { return paintArtifact().disp layItemList(); }
125 const Vector<PaintChunk>& paintChunks() const { return paintArtifact().paint Chunks(); } 125 const Vector<PaintChunk>& paintChunks() const { return paintArtifact().paint Chunks(); }
126 126
127 bool clientCacheIsValid(const DisplayItemClient&) const; 127 bool clientCacheIsValid(const DisplayItemClient&) const;
128 bool cacheIsEmpty() const { return m_currentPaintArtifact.isEmpty(); } 128 bool cacheIsEmpty() const { return m_currentPaintArtifact.isEmpty(); }
129 129
130 // For micro benchmarking of record time.
130 bool displayItemConstructionIsDisabled() const { return m_constructionDisabl ed; } 131 bool displayItemConstructionIsDisabled() const { return m_constructionDisabl ed; }
131 void setDisplayItemConstructionIsDisabled(const bool disable) { m_constructi onDisabled = disable; } 132 void setDisplayItemConstructionIsDisabled(const bool disable) { m_constructi onDisabled = disable; }
133 bool subsequenceCachingIsDisabled() const { return m_subsequenceCachingDisab led; }
134 void setSubsequenceCachingIsDisabled(bool disable) { m_subsequenceCachingDis abled = disable; }
132 135
133 bool textPainted() const { return m_textPainted; } 136 bool textPainted() const { return m_textPainted; }
134 void setTextPainted() { m_textPainted = true; } 137 void setTextPainted() { m_textPainted = true; }
135 bool imagePainted() const { return m_imagePainted; } 138 bool imagePainted() const { return m_imagePainted; }
136 void setImagePainted() { m_imagePainted = true; } 139 void setImagePainted() { m_imagePainted = true; }
137 140
138 // Returns displayItemList added using createAndAppend() since beginning or 141 // Returns displayItemList added using createAndAppend() since beginning or
139 // the last commitNewDisplayItems(). Use with care. 142 // the last commitNewDisplayItems(). Use with care.
140 DisplayItemList& newDisplayItemList() { return m_newDisplayItemList; } 143 DisplayItemList& newDisplayItemList() { return m_newDisplayItemList; }
141 144
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 179
177 #if ENABLE(ASSERT) 180 #if ENABLE(ASSERT)
178 void assertDisplayItemClientsAreLive(); 181 void assertDisplayItemClientsAreLive();
179 #endif 182 #endif
180 183
181 protected: 184 protected:
182 PaintController() 185 PaintController()
183 : m_newDisplayItemList(kInitialDisplayItemListCapacityBytes) 186 : m_newDisplayItemList(kInitialDisplayItemListCapacityBytes)
184 , m_validlyCachedClientsDirty(false) 187 , m_validlyCachedClientsDirty(false)
185 , m_constructionDisabled(false) 188 , m_constructionDisabled(false)
189 , m_subsequenceCachingDisabled(false)
186 , m_textPainted(false) 190 , m_textPainted(false)
187 , m_imagePainted(false) 191 , m_imagePainted(false)
188 , m_skippingCacheCount(0) 192 , m_skippingCacheCount(0)
189 , m_numCachedNewItems(0) 193 , m_numCachedNewItems(0)
190 , m_nextScope(1) { } 194 , m_nextScope(1) { }
191 195
192 private: 196 private:
193 // Set new item state (scopes, cache skipping, etc) for a new item. 197 // Set new item state (scopes, cache skipping, etc) for a new item.
194 void processNewItem(DisplayItem&); 198 void processNewItem(DisplayItem&);
195 199
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 #if ENABLE(ASSERT) 250 #if ENABLE(ASSERT)
247 // Set of clients which had paint offset changes since the last commit. This is used for 251 // Set of clients which had paint offset changes since the last commit. This is used for
248 // ensuring paint offsets are only updated once and are the same in all phas es. 252 // ensuring paint offsets are only updated once and are the same in all phas es.
249 HashSet<const DisplayItemClient*> m_clientsWithPaintOffsetInvalidations; 253 HashSet<const DisplayItemClient*> m_clientsWithPaintOffsetInvalidations;
250 #endif 254 #endif
251 255
252 // Allow display item construction to be disabled to isolate the costs of co nstruction 256 // Allow display item construction to be disabled to isolate the costs of co nstruction
253 // in performance metrics. 257 // in performance metrics.
254 bool m_constructionDisabled; 258 bool m_constructionDisabled;
255 259
260 // Allow subsequence caching to be disabled to test the cost of display item caching.
261 bool m_subsequenceCachingDisabled;
262
256 // Indicates this PaintController has ever had text. It is never reset to fa lse. 263 // Indicates this PaintController has ever had text. It is never reset to fa lse.
257 bool m_textPainted; 264 bool m_textPainted;
258 bool m_imagePainted; 265 bool m_imagePainted;
259 266
260 int m_skippingCacheCount; 267 int m_skippingCacheCount;
261 268
262 int m_numCachedNewItems; 269 int m_numCachedNewItems;
263 270
264 unsigned m_nextScope; 271 unsigned m_nextScope;
265 Vector<unsigned> m_scopeStack; 272 Vector<unsigned> m_scopeStack;
266 273
267 #if ENABLE(ASSERT) 274 #if ENABLE(ASSERT)
268 // Record the debug names of invalidated clients for assertion and debugging . 275 // Record the debug names of invalidated clients for assertion and debugging .
269 Vector<String> m_invalidations; 276 Vector<String> m_invalidations;
270 277
271 // This is used to check duplicated ids during add(). We could also check 278 // This is used to check duplicated ids during add(). We could also check
272 // during commitNewDisplayItems(), but checking during add() helps developer 279 // during commitNewDisplayItems(), but checking during add() helps developer
273 // easily find where the duplicated ids are from. 280 // easily find where the duplicated ids are from.
274 DisplayItemIndicesByClientMap m_newDisplayItemIndicesByClient; 281 DisplayItemIndicesByClientMap m_newDisplayItemIndicesByClient;
275 #endif 282 #endif
276 283
277 OwnPtr<Vector<String>> m_trackedPaintInvalidationObjects; 284 OwnPtr<Vector<String>> m_trackedPaintInvalidationObjects;
278 }; 285 };
279 286
280 } // namespace blink 287 } // namespace blink
281 288
282 #endif // PaintController_h 289 #endif // PaintController_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698