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

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

Issue 2118993002: Detemplatize cc property nodes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 5 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/effect_node.cc ('k') | cc/trees/layer_tree_host_common_unittest.cc » ('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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/layer_tree_host_common.h" 5 #include "cc/trees/layer_tree_host_common.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
11 #include "base/containers/adapters.h" 11 #include "base/containers/adapters.h"
12 #include "base/trace_event/trace_event.h" 12 #include "base/trace_event/trace_event.h"
13 #include "cc/base/math_util.h" 13 #include "cc/base/math_util.h"
14 #include "cc/layers/heads_up_display_layer_impl.h" 14 #include "cc/layers/heads_up_display_layer_impl.h"
15 #include "cc/layers/layer.h" 15 #include "cc/layers/layer.h"
16 #include "cc/layers/layer_impl.h" 16 #include "cc/layers/layer_impl.h"
17 #include "cc/layers/layer_iterator.h" 17 #include "cc/layers/layer_iterator.h"
18 #include "cc/proto/begin_main_frame_and_commit_state.pb.h" 18 #include "cc/proto/begin_main_frame_and_commit_state.pb.h"
19 #include "cc/proto/gfx_conversions.h" 19 #include "cc/proto/gfx_conversions.h"
20 #include "cc/trees/draw_property_utils.h" 20 #include "cc/trees/draw_property_utils.h"
21 #include "cc/trees/effect_node.h"
21 #include "cc/trees/layer_tree_host.h" 22 #include "cc/trees/layer_tree_host.h"
22 #include "cc/trees/layer_tree_impl.h" 23 #include "cc/trees/layer_tree_impl.h"
23 #include "cc/trees/property_tree_builder.h" 24 #include "cc/trees/property_tree_builder.h"
25 #include "cc/trees/scroll_node.h"
24 #include "ui/gfx/geometry/rect_conversions.h" 26 #include "ui/gfx/geometry/rect_conversions.h"
25 #include "ui/gfx/geometry/vector2d_conversions.h" 27 #include "ui/gfx/geometry/vector2d_conversions.h"
26 #include "ui/gfx/transform.h" 28 #include "ui/gfx/transform.h"
27 #include "ui/gfx/transform_util.h" 29 #include "ui/gfx/transform_util.h"
28 30
29 namespace cc { 31 namespace cc {
30 32
31 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting:: 33 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting::
32 CalcDrawPropsMainInputsForTesting(Layer* root_layer, 34 CalcDrawPropsMainInputsForTesting(Layer* root_layer,
33 const gfx::Size& device_viewport_size, 35 const gfx::Size& device_viewport_size,
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 mask_layer->set_is_drawn_render_surface_layer_list_member(false); 214 mask_layer->set_is_drawn_render_surface_layer_list_member(false);
213 if (replica_mask_layer) 215 if (replica_mask_layer)
214 replica_mask_layer->set_is_drawn_render_surface_layer_list_member(false); 216 replica_mask_layer->set_is_drawn_render_surface_layer_list_member(false);
215 } 217 }
216 218
217 static inline void ClearIsDrawnRenderSurfaceLayerListMember( 219 static inline void ClearIsDrawnRenderSurfaceLayerListMember(
218 LayerImplList* layer_list, 220 LayerImplList* layer_list,
219 ScrollTree* scroll_tree) { 221 ScrollTree* scroll_tree) {
220 for (LayerImpl* layer : *layer_list) { 222 for (LayerImpl* layer : *layer_list) {
221 if (layer->is_drawn_render_surface_layer_list_member()) { 223 if (layer->is_drawn_render_surface_layer_list_member()) {
222 DCHECK_GT(scroll_tree->Node(layer->scroll_tree_index()) 224 DCHECK_GT(
223 ->data.num_drawn_descendants, 225 scroll_tree->Node(layer->scroll_tree_index())->num_drawn_descendants,
224 0); 226 0);
225 scroll_tree->Node(layer->scroll_tree_index()) 227 scroll_tree->Node(layer->scroll_tree_index())->num_drawn_descendants--;
226 ->data.num_drawn_descendants--;
227 } 228 }
228 layer->set_is_drawn_render_surface_layer_list_member(false); 229 layer->set_is_drawn_render_surface_layer_list_member(false);
229 } 230 }
230 } 231 }
231 232
232 static bool CdpPerfTracingEnabled() { 233 static bool CdpPerfTracingEnabled() {
233 bool tracing_enabled; 234 bool tracing_enabled;
234 TRACE_EVENT_CATEGORY_GROUP_ENABLED("cdp.perf", &tracing_enabled); 235 TRACE_EVENT_CATEGORY_GROUP_ENABLED("cdp.perf", &tracing_enabled);
235 return tracing_enabled; 236 return tracing_enabled;
236 } 237 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 297
297 enum PropertyTreeOption { 298 enum PropertyTreeOption {
298 BUILD_PROPERTY_TREES_IF_NEEDED, 299 BUILD_PROPERTY_TREES_IF_NEEDED,
299 DONT_BUILD_PROPERTY_TREES 300 DONT_BUILD_PROPERTY_TREES
300 }; 301 };
301 302
302 static void ComputeLayerScrollsDrawnDescendants(LayerTreeImpl* layer_tree_impl, 303 static void ComputeLayerScrollsDrawnDescendants(LayerTreeImpl* layer_tree_impl,
303 ScrollTree* scroll_tree) { 304 ScrollTree* scroll_tree) {
304 for (int i = static_cast<int>(scroll_tree->size()) - 1; i > 0; --i) { 305 for (int i = static_cast<int>(scroll_tree->size()) - 1; i > 0; --i) {
305 ScrollNode* node = scroll_tree->Node(i); 306 ScrollNode* node = scroll_tree->Node(i);
306 scroll_tree->parent(node)->data.num_drawn_descendants += 307 scroll_tree->parent(node)->num_drawn_descendants +=
307 node->data.num_drawn_descendants; 308 node->num_drawn_descendants;
308 } 309 }
309 for (LayerImpl* layer : *layer_tree_impl) { 310 for (LayerImpl* layer : *layer_tree_impl) {
310 bool scrolls_drawn_descendant = false; 311 bool scrolls_drawn_descendant = false;
311 if (layer->scrollable()) { 312 if (layer->scrollable()) {
312 ScrollNode* node = scroll_tree->Node(layer->scroll_tree_index()); 313 ScrollNode* node = scroll_tree->Node(layer->scroll_tree_index());
313 if (node->data.num_drawn_descendants > 0) 314 if (node->num_drawn_descendants > 0)
314 scrolls_drawn_descendant = true; 315 scrolls_drawn_descendant = true;
315 } 316 }
316 layer->set_scrolls_drawn_descendant(scrolls_drawn_descendant); 317 layer->set_scrolls_drawn_descendant(scrolls_drawn_descendant);
317 } 318 }
318 } 319 }
319 320
320 static void ComputeInitialRenderSurfaceLayerList( 321 static void ComputeInitialRenderSurfaceLayerList(
321 LayerTreeImpl* layer_tree_impl, 322 LayerTreeImpl* layer_tree_impl,
322 PropertyTrees* property_trees, 323 PropertyTrees* property_trees,
323 LayerImplList* render_surface_layer_list, 324 LayerImplList* render_surface_layer_list,
324 bool can_render_to_separate_surface) { 325 bool can_render_to_separate_surface) {
325 ScrollTree* scroll_tree = &property_trees->scroll_tree; 326 ScrollTree* scroll_tree = &property_trees->scroll_tree;
326 for (int i = 0; i < static_cast<int>(scroll_tree->size()); ++i) 327 for (int i = 0; i < static_cast<int>(scroll_tree->size()); ++i)
327 scroll_tree->Node(i)->data.num_drawn_descendants = 0; 328 scroll_tree->Node(i)->num_drawn_descendants = 0;
328 329
329 // Add all non-skipped surfaces to the initial render surface layer list. Add 330 // Add all non-skipped surfaces to the initial render surface layer list. Add
330 // all non-skipped layers to the layer list of their target surface, and 331 // all non-skipped layers to the layer list of their target surface, and
331 // add their content rect to their target surface's accumulated content rect. 332 // add their content rect to their target surface's accumulated content rect.
332 for (LayerImpl* layer : *layer_tree_impl) { 333 for (LayerImpl* layer : *layer_tree_impl) {
333 if (layer->render_surface()) { 334 if (layer->render_surface()) {
334 layer->ClearRenderSurfaceLayerList(); 335 layer->ClearRenderSurfaceLayerList();
335 ClearMaskLayersAreDrawnRenderSurfaceLayerListMembers( 336 ClearMaskLayersAreDrawnRenderSurfaceLayerListMembers(
336 layer->render_surface()); 337 layer->render_surface());
337 } 338 }
338 layer->set_is_drawn_render_surface_layer_list_member(false); 339 layer->set_is_drawn_render_surface_layer_list_member(false);
339 340
340 bool layer_is_drawn = 341 bool layer_is_drawn =
341 property_trees->effect_tree.Node(layer->effect_tree_index()) 342 property_trees->effect_tree.Node(layer->effect_tree_index())->is_drawn;
342 ->data.is_drawn;
343 bool is_root = layer_tree_impl->IsRootLayer(layer); 343 bool is_root = layer_tree_impl->IsRootLayer(layer);
344 bool skip_layer = 344 bool skip_layer =
345 !is_root && draw_property_utils::LayerShouldBeSkipped( 345 !is_root && draw_property_utils::LayerShouldBeSkipped(
346 layer, layer_is_drawn, property_trees->transform_tree, 346 layer, layer_is_drawn, property_trees->transform_tree,
347 property_trees->effect_tree); 347 property_trees->effect_tree);
348 if (skip_layer) 348 if (skip_layer)
349 continue; 349 continue;
350 350
351 bool render_to_separate_surface = 351 bool render_to_separate_surface =
352 is_root || (can_render_to_separate_surface && layer->render_surface()); 352 is_root || (can_render_to_separate_surface && layer->render_surface());
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 surface->SetNearestOcclusionImmuneAncestor( 392 surface->SetNearestOcclusionImmuneAncestor(
393 surface->render_target()->nearest_occlusion_immune_ancestor()); 393 surface->render_target()->nearest_occlusion_immune_ancestor());
394 } 394 }
395 } 395 }
396 bool layer_should_be_drawn = draw_property_utils::LayerNeedsUpdate( 396 bool layer_should_be_drawn = draw_property_utils::LayerNeedsUpdate(
397 layer, layer_is_drawn, property_trees->transform_tree); 397 layer, layer_is_drawn, property_trees->transform_tree);
398 if (!layer_should_be_drawn) 398 if (!layer_should_be_drawn)
399 continue; 399 continue;
400 400
401 layer->set_is_drawn_render_surface_layer_list_member(true); 401 layer->set_is_drawn_render_surface_layer_list_member(true);
402 scroll_tree->Node(layer->scroll_tree_index())->data.num_drawn_descendants++; 402 scroll_tree->Node(layer->scroll_tree_index())->num_drawn_descendants++;
403 layer->render_target()->layer_list().push_back(layer); 403 layer->render_target()->layer_list().push_back(layer);
404 404
405 // The layer contributes its drawable content rect to its render target. 405 // The layer contributes its drawable content rect to its render target.
406 layer->render_target()->AccumulateContentRectFromContributingLayer(layer); 406 layer->render_target()->AccumulateContentRectFromContributingLayer(layer);
407 } 407 }
408 } 408 }
409 409
410 static void ComputeSurfaceContentRects(LayerTreeImpl* layer_tree_impl, 410 static void ComputeSurfaceContentRects(LayerTreeImpl* layer_tree_impl,
411 PropertyTrees* property_trees, 411 PropertyTrees* property_trees,
412 LayerImplList* render_surface_layer_list, 412 LayerImplList* render_surface_layer_list,
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 689
690 PropertyTrees* GetPropertyTrees(Layer* layer) { 690 PropertyTrees* GetPropertyTrees(Layer* layer) {
691 return layer->layer_tree_host()->property_trees(); 691 return layer->layer_tree_host()->property_trees();
692 } 692 }
693 693
694 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { 694 PropertyTrees* GetPropertyTrees(LayerImpl* layer) {
695 return layer->layer_tree_impl()->property_trees(); 695 return layer->layer_tree_impl()->property_trees();
696 } 696 }
697 697
698 } // namespace cc 698 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/effect_node.cc ('k') | cc/trees/layer_tree_host_common_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698