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

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintLayer.h

Issue 2784963002: Optimize the pre-paint tree walk and ClipRects (Closed)
Patch Set: none Created 3 years, 8 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 /* 1 /*
2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. 3 * Copyright (C) 2013 Intel Corporation. All rights reserved.
4 * 4 *
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
6 * 6 *
7 * Other contributors: 7 * Other contributors:
8 * Robert O'Callahan <roc+@cs.cmu.edu> 8 * Robert O'Callahan <roc+@cs.cmu.edu>
9 * David Baron <dbaron@fas.harvard.edu> 9 * David Baron <dbaron@fas.harvard.edu>
10 * Christian Biesinger <cbiesinger@web.de> 10 * Christian Biesinger <cbiesinger@web.de>
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 // shouldCreateSubsequence() in PaintLayerPainter.cpp for the cases we use 894 // shouldCreateSubsequence() in PaintLayerPainter.cpp for the cases we use
895 // subsequence when painting a PaintLayer. 895 // subsequence when painting a PaintLayer.
896 896
897 IntSize previousScrollOffsetAccumulationForPainting() const { 897 IntSize previousScrollOffsetAccumulationForPainting() const {
898 return m_previousScrollOffsetAccumulationForPainting; 898 return m_previousScrollOffsetAccumulationForPainting;
899 } 899 }
900 void setPreviousScrollOffsetAccumulationForPainting(const IntSize& s) { 900 void setPreviousScrollOffsetAccumulationForPainting(const IntSize& s) {
901 m_previousScrollOffsetAccumulationForPainting = s; 901 m_previousScrollOffsetAccumulationForPainting = s;
902 } 902 }
903 903
904 ClipRects* previousPaintingClipRects() const { 904 bool hasPreviousPaintingClipRects() const {
905 return m_previousPaintingClipRects.get(); 905 return m_hasPreviousPaintingClipRects;
906 } 906 }
907 void setPreviousPaintingClipRects(ClipRects& clipRects) { 907
908 m_previousPaintingClipRects = &clipRects; 908 const ClipRects& previousPaintingClipRects() const {
909 return m_previousPaintingClipRects;
910 }
911
912 void setPreviousPaintingClipRects(const ClipRects& clipRects) {
913 m_previousPaintingClipRects = clipRects;
914 m_hasPreviousPaintingClipRects = true;
909 } 915 }
910 916
911 LayoutRect previousPaintDirtyRect() const { return m_previousPaintDirtyRect; } 917 LayoutRect previousPaintDirtyRect() const { return m_previousPaintDirtyRect; }
912 void setPreviousPaintDirtyRect(const LayoutRect& rect) { 918 void setPreviousPaintDirtyRect(const LayoutRect& rect) {
913 m_previousPaintDirtyRect = rect; 919 m_previousPaintDirtyRect = rect;
914 } 920 }
915 921
916 PaintResult previousPaintResult() const { 922 PaintResult previousPaintResult() const {
917 return static_cast<PaintResult>(m_previousPaintResult); 923 return static_cast<PaintResult>(m_previousPaintResult);
918 } 924 }
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 unsigned m_previousPaintPhaseDescendantBlockBackgroundsWasEmpty : 1; 1199 unsigned m_previousPaintPhaseDescendantBlockBackgroundsWasEmpty : 1;
1194 1200
1195 // These bitfields are part of ancestor/descendant dependent compositing 1201 // These bitfields are part of ancestor/descendant dependent compositing
1196 // inputs. 1202 // inputs.
1197 unsigned m_hasDescendantWithClipPath : 1; 1203 unsigned m_hasDescendantWithClipPath : 1;
1198 unsigned m_hasNonIsolatedDescendantWithBlendMode : 1; 1204 unsigned m_hasNonIsolatedDescendantWithBlendMode : 1;
1199 unsigned m_hasAncestorWithClipPath : 1; 1205 unsigned m_hasAncestorWithClipPath : 1;
1200 1206
1201 unsigned m_selfPaintingStatusChanged : 1; 1207 unsigned m_selfPaintingStatusChanged : 1;
1202 1208
1209 unsigned m_hasPreviousPaintingClipRects : 1;
1210
1203 LayoutBoxModelObject& m_layoutObject; 1211 LayoutBoxModelObject& m_layoutObject;
1204 1212
1205 PaintLayer* m_parent; 1213 PaintLayer* m_parent;
1206 PaintLayer* m_previous; 1214 PaintLayer* m_previous;
1207 PaintLayer* m_next; 1215 PaintLayer* m_next;
1208 PaintLayer* m_first; 1216 PaintLayer* m_first;
1209 PaintLayer* m_last; 1217 PaintLayer* m_last;
1210 1218
1211 // Our (x,y) coordinates are in our containing layer's coordinate space. 1219 // Our (x,y) coordinates are in our containing layer's coordinate space.
1212 LayoutPoint m_location; 1220 LayoutPoint m_location;
(...skipping 15 matching lines...) Expand all
1228 std::unique_ptr<AncestorDependentCompositingInputs> 1236 std::unique_ptr<AncestorDependentCompositingInputs>
1229 m_ancestorDependentCompositingInputs; 1237 m_ancestorDependentCompositingInputs;
1230 1238
1231 Persistent<PaintLayerScrollableArea> m_scrollableArea; 1239 Persistent<PaintLayerScrollableArea> m_scrollableArea;
1232 1240
1233 mutable std::unique_ptr<ClipRectsCache> m_clipRectsCache; 1241 mutable std::unique_ptr<ClipRectsCache> m_clipRectsCache;
1234 1242
1235 std::unique_ptr<PaintLayerStackingNode> m_stackingNode; 1243 std::unique_ptr<PaintLayerStackingNode> m_stackingNode;
1236 1244
1237 IntSize m_previousScrollOffsetAccumulationForPainting; 1245 IntSize m_previousScrollOffsetAccumulationForPainting;
1238 RefPtr<ClipRects> m_previousPaintingClipRects; 1246 ClipRects m_previousPaintingClipRects;
1239 LayoutRect m_previousPaintDirtyRect; 1247 LayoutRect m_previousPaintDirtyRect;
1240 1248
1241 std::unique_ptr<PaintLayerRareData> m_rareData; 1249 std::unique_ptr<PaintLayerRareData> m_rareData;
1242 1250
1243 FRIEND_TEST_ALL_PREFIXES(PaintLayerTest, 1251 FRIEND_TEST_ALL_PREFIXES(PaintLayerTest,
1244 DescendantDependentFlagsStopsAtThrottledFrames); 1252 DescendantDependentFlagsStopsAtThrottledFrames);
1245 FRIEND_TEST_ALL_PREFIXES(PaintLayerTest, 1253 FRIEND_TEST_ALL_PREFIXES(PaintLayerTest,
1246 PaintLayerTransformUpdatedOnStyleTransformAnimation); 1254 PaintLayerTransformUpdatedOnStyleTransformAnimation);
1247 }; 1255 };
1248 1256
1249 } // namespace blink 1257 } // namespace blink
1250 1258
1251 #ifndef NDEBUG 1259 #ifndef NDEBUG
1252 // Outside the WebCore namespace for ease of invocation from gdb. 1260 // Outside the WebCore namespace for ease of invocation from gdb.
1253 CORE_EXPORT void showLayerTree(const blink::PaintLayer*); 1261 CORE_EXPORT void showLayerTree(const blink::PaintLayer*);
1254 CORE_EXPORT void showLayerTree(const blink::LayoutObject*); 1262 CORE_EXPORT void showLayerTree(const blink::LayoutObject*);
1255 #endif 1263 #endif
1256 1264
1257 #endif // Layer_h 1265 #endif // Layer_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698