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

Side by Side Diff: cc/trees/debug_rect_history.cc

Issue 2834123002: cc: Replace render surface layer list with a render surface list (Closed)
Patch Set: Address review comments Created 3 years, 7 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 | « cc/trees/debug_rect_history.h ('k') | cc/trees/layer_tree_host_common.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "cc/trees/debug_rect_history.h" 5 #include "cc/trees/debug_rect_history.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 14 matching lines...) Expand all
25 return base::WrapUnique(new DebugRectHistory()); 25 return base::WrapUnique(new DebugRectHistory());
26 } 26 }
27 27
28 DebugRectHistory::DebugRectHistory() {} 28 DebugRectHistory::DebugRectHistory() {}
29 29
30 DebugRectHistory::~DebugRectHistory() {} 30 DebugRectHistory::~DebugRectHistory() {}
31 31
32 void DebugRectHistory::SaveDebugRectsForCurrentFrame( 32 void DebugRectHistory::SaveDebugRectsForCurrentFrame(
33 LayerTreeImpl* tree_impl, 33 LayerTreeImpl* tree_impl,
34 LayerImpl* hud_layer, 34 LayerImpl* hud_layer,
35 const LayerImplList& render_surface_layer_list, 35 const RenderSurfaceList& render_surface_list,
36 const LayerTreeDebugState& debug_state) { 36 const LayerTreeDebugState& debug_state) {
37 // For now, clear all rects from previous frames. In the future we may want to 37 // For now, clear all rects from previous frames. In the future we may want to
38 // store all debug rects for a history of many frames. 38 // store all debug rects for a history of many frames.
39 debug_rects_.clear(); 39 debug_rects_.clear();
40 40
41 if (debug_state.show_touch_event_handler_rects) 41 if (debug_state.show_touch_event_handler_rects)
42 SaveTouchEventHandlerRects(tree_impl); 42 SaveTouchEventHandlerRects(tree_impl);
43 43
44 if (debug_state.show_wheel_event_handler_rects) 44 if (debug_state.show_wheel_event_handler_rects)
45 SaveWheelEventHandlerRects(tree_impl); 45 SaveWheelEventHandlerRects(tree_impl);
46 46
47 if (debug_state.show_scroll_event_handler_rects) 47 if (debug_state.show_scroll_event_handler_rects)
48 SaveScrollEventHandlerRects(tree_impl); 48 SaveScrollEventHandlerRects(tree_impl);
49 49
50 if (debug_state.show_non_fast_scrollable_rects) 50 if (debug_state.show_non_fast_scrollable_rects)
51 SaveNonFastScrollableRects(tree_impl); 51 SaveNonFastScrollableRects(tree_impl);
52 52
53 if (debug_state.show_paint_rects) 53 if (debug_state.show_paint_rects)
54 SavePaintRects(tree_impl); 54 SavePaintRects(tree_impl);
55 55
56 if (debug_state.show_property_changed_rects) 56 if (debug_state.show_property_changed_rects)
57 SavePropertyChangedRects(render_surface_layer_list, hud_layer); 57 SavePropertyChangedRects(tree_impl, hud_layer);
58 58
59 if (debug_state.show_surface_damage_rects) 59 if (debug_state.show_surface_damage_rects)
60 SaveSurfaceDamageRects(render_surface_layer_list); 60 SaveSurfaceDamageRects(render_surface_list);
61 61
62 if (debug_state.show_screen_space_rects) 62 if (debug_state.show_screen_space_rects)
63 SaveScreenSpaceRects(render_surface_layer_list); 63 SaveScreenSpaceRects(render_surface_list);
64 64
65 if (debug_state.show_layer_animation_bounds_rects) 65 if (debug_state.show_layer_animation_bounds_rects)
66 SaveLayerAnimationBoundsRects(tree_impl); 66 SaveLayerAnimationBoundsRects(tree_impl);
67 } 67 }
68 68
69 void DebugRectHistory::SavePaintRects(LayerTreeImpl* tree_impl) { 69 void DebugRectHistory::SavePaintRects(LayerTreeImpl* tree_impl) {
70 // We would like to visualize where any layer's paint rect (update rect) has 70 // We would like to visualize where any layer's paint rect (update rect) has
71 // changed, regardless of whether this layer is skipped for actual drawing or 71 // changed, regardless of whether this layer is skipped for actual drawing or
72 // not. Therefore we traverse over all layers, not just the render surface 72 // not. Therefore we traverse over all layers, not just the render surface
73 // list. 73 // list.
74 for (auto* layer : *tree_impl) { 74 for (auto* layer : *tree_impl) {
75 Region invalidation_region = layer->GetInvalidationRegionForDebugging(); 75 Region invalidation_region = layer->GetInvalidationRegionForDebugging();
76 if (invalidation_region.IsEmpty() || !layer->DrawsContent()) 76 if (invalidation_region.IsEmpty() || !layer->DrawsContent())
77 continue; 77 continue;
78 78
79 for (Region::Iterator it(invalidation_region); it.has_rect(); it.next()) { 79 for (Region::Iterator it(invalidation_region); it.has_rect(); it.next()) {
80 debug_rects_.push_back(DebugRect( 80 debug_rects_.push_back(DebugRect(
81 PAINT_RECT_TYPE, MathUtil::MapEnclosingClippedRect( 81 PAINT_RECT_TYPE, MathUtil::MapEnclosingClippedRect(
82 layer->ScreenSpaceTransform(), it.rect()))); 82 layer->ScreenSpaceTransform(), it.rect())));
83 } 83 }
84 } 84 }
85 } 85 }
86 86
87 void DebugRectHistory::SavePropertyChangedRects( 87 void DebugRectHistory::SavePropertyChangedRects(LayerTreeImpl* tree_impl,
88 const LayerImplList& render_surface_layer_list, 88 LayerImpl* hud_layer) {
89 LayerImpl* hud_layer) { 89 for (LayerImpl* layer : *tree_impl) {
90 for (size_t i = 0; i < render_surface_layer_list.size(); ++i) { 90 if (layer == hud_layer)
91 size_t surface_index = render_surface_layer_list.size() - 1 - i; 91 continue;
92 LayerImpl* render_surface_layer = render_surface_layer_list[surface_index];
93 RenderSurfaceImpl* render_surface =
94 render_surface_layer->GetRenderSurface();
95 DCHECK(render_surface);
96 92
97 const LayerImplList& layer_list = render_surface->layer_list(); 93 if (!layer->LayerPropertyChanged())
98 for (unsigned layer_index = 0; layer_index < layer_list.size(); 94 continue;
99 ++layer_index) {
100 LayerImpl* layer = layer_list[layer_index];
101 95
102 if (layer->GetRenderSurface() && 96 debug_rects_.push_back(DebugRect(
103 layer->GetRenderSurface() != render_surface) 97 PROPERTY_CHANGED_RECT_TYPE,
104 continue; 98 MathUtil::MapEnclosingClippedRect(layer->ScreenSpaceTransform(),
105 99 gfx::Rect(layer->bounds()))));
106 if (layer == hud_layer)
107 continue;
108
109 if (!layer->LayerPropertyChanged())
110 continue;
111
112 debug_rects_.push_back(DebugRect(
113 PROPERTY_CHANGED_RECT_TYPE,
114 MathUtil::MapEnclosingClippedRect(layer->ScreenSpaceTransform(),
115 gfx::Rect(layer->bounds()))));
116 }
117 } 100 }
118 } 101 }
119 102
120 void DebugRectHistory::SaveSurfaceDamageRects( 103 void DebugRectHistory::SaveSurfaceDamageRects(
121 const LayerImplList& render_surface_layer_list) { 104 const RenderSurfaceList& render_surface_list) {
122 for (size_t i = 0; i < render_surface_layer_list.size(); ++i) { 105 for (size_t i = 0; i < render_surface_list.size(); ++i) {
123 size_t surface_index = render_surface_layer_list.size() - 1 - i; 106 size_t surface_index = render_surface_list.size() - 1 - i;
124 LayerImpl* render_surface_layer = render_surface_layer_list[surface_index]; 107 RenderSurfaceImpl* render_surface = render_surface_list[surface_index];
125 RenderSurfaceImpl* render_surface =
126 render_surface_layer->GetRenderSurface();
127 DCHECK(render_surface); 108 DCHECK(render_surface);
128 109
129 debug_rects_.push_back(DebugRect( 110 debug_rects_.push_back(DebugRect(
130 SURFACE_DAMAGE_RECT_TYPE, MathUtil::MapEnclosingClippedRect( 111 SURFACE_DAMAGE_RECT_TYPE, MathUtil::MapEnclosingClippedRect(
131 render_surface->screen_space_transform(), 112 render_surface->screen_space_transform(),
132 render_surface->GetDamageRect()))); 113 render_surface->GetDamageRect())));
133 } 114 }
134 } 115 }
135 116
136 void DebugRectHistory::SaveScreenSpaceRects( 117 void DebugRectHistory::SaveScreenSpaceRects(
137 const LayerImplList& render_surface_layer_list) { 118 const RenderSurfaceList& render_surface_list) {
138 for (size_t i = 0; i < render_surface_layer_list.size(); ++i) { 119 for (size_t i = 0; i < render_surface_list.size(); ++i) {
139 size_t surface_index = render_surface_layer_list.size() - 1 - i; 120 size_t surface_index = render_surface_list.size() - 1 - i;
140 LayerImpl* render_surface_layer = render_surface_layer_list[surface_index]; 121 RenderSurfaceImpl* render_surface = render_surface_list[surface_index];
141 RenderSurfaceImpl* render_surface =
142 render_surface_layer->GetRenderSurface();
143 DCHECK(render_surface); 122 DCHECK(render_surface);
144 123
145 debug_rects_.push_back(DebugRect( 124 debug_rects_.push_back(DebugRect(
146 SCREEN_SPACE_RECT_TYPE, MathUtil::MapEnclosingClippedRect( 125 SCREEN_SPACE_RECT_TYPE, MathUtil::MapEnclosingClippedRect(
147 render_surface->screen_space_transform(), 126 render_surface->screen_space_transform(),
148 render_surface->content_rect()))); 127 render_surface->content_rect())));
149 } 128 }
150 } 129 }
151 130
152 void DebugRectHistory::SaveTouchEventHandlerRects(LayerTreeImpl* tree_impl) { 131 void DebugRectHistory::SaveTouchEventHandlerRects(LayerTreeImpl* tree_impl) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 208
230 debug_rects_.push_back( 209 debug_rects_.push_back(
231 DebugRect(ANIMATION_BOUNDS_RECT_TYPE, 210 DebugRect(ANIMATION_BOUNDS_RECT_TYPE,
232 gfx::ToEnclosingRect(gfx::RectF( 211 gfx::ToEnclosingRect(gfx::RectF(
233 inflated_bounds.x(), inflated_bounds.y(), 212 inflated_bounds.x(), inflated_bounds.y(),
234 inflated_bounds.width(), inflated_bounds.height())))); 213 inflated_bounds.width(), inflated_bounds.height()))));
235 } 214 }
236 } 215 }
237 216
238 } // namespace cc 217 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/debug_rect_history.h ('k') | cc/trees/layer_tree_host_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698