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

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

Issue 2655233006: cc : Clean up cc clip tree (Closed)
Patch Set: blink_tests Created 3 years, 9 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 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
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 float device_scale_factor, 73 float device_scale_factor,
74 float page_scale_factor, 74 float page_scale_factor,
75 const LayerImpl* page_scale_layer, 75 const LayerImpl* page_scale_layer,
76 const LayerImpl* inner_viewport_scroll_layer, 76 const LayerImpl* inner_viewport_scroll_layer,
77 const LayerImpl* outer_viewport_scroll_layer, 77 const LayerImpl* outer_viewport_scroll_layer,
78 const gfx::Vector2dF& elastic_overscroll, 78 const gfx::Vector2dF& elastic_overscroll,
79 const LayerImpl* elastic_overscroll_application_layer, 79 const LayerImpl* elastic_overscroll_application_layer,
80 int max_texture_size, 80 int max_texture_size,
81 bool can_render_to_separate_surface, 81 bool can_render_to_separate_surface,
82 bool can_adjust_raster_scales, 82 bool can_adjust_raster_scales,
83 bool verify_clip_tree_calculations,
84 bool verify_visible_rect_calculations,
85 LayerImplList* render_surface_layer_list, 83 LayerImplList* render_surface_layer_list,
86 PropertyTrees* property_trees) 84 PropertyTrees* property_trees)
87 : root_layer(root_layer), 85 : root_layer(root_layer),
88 device_viewport_size(device_viewport_size), 86 device_viewport_size(device_viewport_size),
89 device_transform(device_transform), 87 device_transform(device_transform),
90 device_scale_factor(device_scale_factor), 88 device_scale_factor(device_scale_factor),
91 page_scale_factor(page_scale_factor), 89 page_scale_factor(page_scale_factor),
92 page_scale_layer(page_scale_layer), 90 page_scale_layer(page_scale_layer),
93 inner_viewport_scroll_layer(inner_viewport_scroll_layer), 91 inner_viewport_scroll_layer(inner_viewport_scroll_layer),
94 outer_viewport_scroll_layer(outer_viewport_scroll_layer), 92 outer_viewport_scroll_layer(outer_viewport_scroll_layer),
95 elastic_overscroll(elastic_overscroll), 93 elastic_overscroll(elastic_overscroll),
96 elastic_overscroll_application_layer( 94 elastic_overscroll_application_layer(
97 elastic_overscroll_application_layer), 95 elastic_overscroll_application_layer),
98 max_texture_size(max_texture_size), 96 max_texture_size(max_texture_size),
99 can_render_to_separate_surface(can_render_to_separate_surface), 97 can_render_to_separate_surface(can_render_to_separate_surface),
100 can_adjust_raster_scales(can_adjust_raster_scales), 98 can_adjust_raster_scales(can_adjust_raster_scales),
101 verify_clip_tree_calculations(verify_clip_tree_calculations),
102 verify_visible_rect_calculations(verify_visible_rect_calculations),
103 render_surface_layer_list(render_surface_layer_list), 99 render_surface_layer_list(render_surface_layer_list),
104 property_trees(property_trees) {} 100 property_trees(property_trees) {}
105 101
106 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting:: 102 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting::
107 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer, 103 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer,
108 const gfx::Size& device_viewport_size, 104 const gfx::Size& device_viewport_size,
109 const gfx::Transform& device_transform, 105 const gfx::Transform& device_transform,
110 float device_scale_factor, 106 float device_scale_factor,
111 LayerImplList* render_surface_layer_list) 107 LayerImplList* render_surface_layer_list)
112 : CalcDrawPropsImplInputs(root_layer, 108 : CalcDrawPropsImplInputs(root_layer,
113 device_viewport_size, 109 device_viewport_size,
114 device_transform, 110 device_transform,
115 device_scale_factor, 111 device_scale_factor,
116 1.f, 112 1.f,
117 NULL, 113 NULL,
118 NULL, 114 NULL,
119 NULL, 115 NULL,
120 gfx::Vector2dF(), 116 gfx::Vector2dF(),
121 NULL, 117 NULL,
122 std::numeric_limits<int>::max() / 2, 118 std::numeric_limits<int>::max() / 2,
123 true, 119 true,
124 false, 120 false,
125 true,
126 true,
127 render_surface_layer_list, 121 render_surface_layer_list,
128 GetPropertyTrees(root_layer)) { 122 GetPropertyTrees(root_layer)) {
129 DCHECK(root_layer); 123 DCHECK(root_layer);
130 DCHECK(render_surface_layer_list); 124 DCHECK(render_surface_layer_list);
131 } 125 }
132 126
133 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting:: 127 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting::
134 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer, 128 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer,
135 const gfx::Size& device_viewport_size, 129 const gfx::Size& device_viewport_size,
136 const gfx::Transform& device_transform, 130 const gfx::Transform& device_transform,
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 case BUILD_PROPERTY_TREES_IF_NEEDED: { 464 case BUILD_PROPERTY_TREES_IF_NEEDED: {
471 // The translation from layer to property trees is an intermediate 465 // The translation from layer to property trees is an intermediate
472 // state. We will eventually get these data passed directly to the 466 // state. We will eventually get these data passed directly to the
473 // compositor. 467 // compositor.
474 if (should_measure_property_tree_performance) { 468 if (should_measure_property_tree_performance) {
475 TRACE_EVENT_BEGIN0( 469 TRACE_EVENT_BEGIN0(
476 TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), 470 TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"),
477 "LayerTreeHostCommon::ComputeVisibleRectsWithPropertyTrees"); 471 "LayerTreeHostCommon::ComputeVisibleRectsWithPropertyTrees");
478 } 472 }
479 473
480 draw_property_utils::BuildPropertyTreesAndComputeVisibleRects( 474 PropertyTreeBuilder::BuildPropertyTrees(
481 inputs->root_layer, inputs->page_scale_layer, 475 inputs->root_layer, inputs->page_scale_layer,
482 inputs->inner_viewport_scroll_layer, 476 inputs->inner_viewport_scroll_layer,
483 inputs->outer_viewport_scroll_layer, 477 inputs->outer_viewport_scroll_layer,
484 inputs->elastic_overscroll_application_layer, 478 inputs->elastic_overscroll_application_layer,
485 inputs->elastic_overscroll, inputs->page_scale_factor, 479 inputs->elastic_overscroll, inputs->page_scale_factor,
486 inputs->device_scale_factor, gfx::Rect(inputs->device_viewport_size), 480 inputs->device_scale_factor, gfx::Rect(inputs->device_viewport_size),
487 inputs->device_transform, inputs->can_render_to_separate_surface, 481 inputs->device_transform, inputs->property_trees);
488 inputs->property_trees, &visible_layer_list); 482 draw_property_utils::UpdatePropertyTreesAndRenderSurfaces(
483 inputs->root_layer, inputs->property_trees,
484 inputs->can_render_to_separate_surface);
485 draw_property_utils::FindLayersThatNeedUpdates(
486 inputs->root_layer->layer_tree_impl(), inputs->property_trees,
487 &visible_layer_list);
489 488
490 // Property trees are normally constructed on the main thread and 489 // Property trees are normally constructed on the main thread and
491 // passed to compositor thread. Source to parent updates on them are not 490 // passed to compositor thread. Source to parent updates on them are not
492 // allowed in the compositor thread. Some tests build them on the 491 // allowed in the compositor thread. Some tests build them on the
493 // compositor thread, so we need to explicitly disallow source to parent 492 // compositor thread, so we need to explicitly disallow source to parent
494 // updates when they are built on compositor thread. 493 // updates when they are built on compositor thread.
495 inputs->property_trees->transform_tree 494 inputs->property_trees->transform_tree
496 .set_source_to_parent_updates_allowed(false); 495 .set_source_to_parent_updates_allowed(false);
497 if (should_measure_property_tree_performance) { 496 if (should_measure_property_tree_performance) {
498 TRACE_EVENT_END0( 497 TRACE_EVENT_END0(
(...skipping 23 matching lines...) Expand all
522 PropertyTrees* property_trees = inputs->property_trees; 521 PropertyTrees* property_trees = inputs->property_trees;
523 property_trees->clip_tree.SetViewportClip( 522 property_trees->clip_tree.SetViewportClip(
524 gfx::RectF(gfx::SizeF(inputs->device_viewport_size))); 523 gfx::RectF(gfx::SizeF(inputs->device_viewport_size)));
525 float page_scale_factor_for_root = 524 float page_scale_factor_for_root =
526 inputs->page_scale_layer == inputs->root_layer 525 inputs->page_scale_layer == inputs->root_layer
527 ? inputs->page_scale_factor 526 ? inputs->page_scale_factor
528 : 1.f; 527 : 1.f;
529 property_trees->transform_tree.SetRootTransformsAndScales( 528 property_trees->transform_tree.SetRootTransformsAndScales(
530 inputs->device_scale_factor, page_scale_factor_for_root, 529 inputs->device_scale_factor, page_scale_factor_for_root,
531 inputs->device_transform, inputs->root_layer->position()); 530 inputs->device_transform, inputs->root_layer->position());
532 draw_property_utils::ComputeVisibleRects( 531 draw_property_utils::UpdatePropertyTreesAndRenderSurfaces(
533 inputs->root_layer, inputs->property_trees, 532 inputs->root_layer, inputs->property_trees,
534 inputs->can_render_to_separate_surface, &visible_layer_list); 533 inputs->can_render_to_separate_surface);
534 draw_property_utils::FindLayersThatNeedUpdates(
535 inputs->root_layer->layer_tree_impl(), inputs->property_trees,
536 &visible_layer_list);
535 break; 537 break;
536 } 538 }
537 } 539 }
538 540
539 if (should_measure_property_tree_performance) { 541 if (should_measure_property_tree_performance) {
540 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), 542 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"),
541 "LayerTreeHostCommon::CalculateDrawProperties"); 543 "LayerTreeHostCommon::CalculateDrawProperties");
542 } 544 }
543 545
544 DCHECK(inputs->can_render_to_separate_surface == 546 DCHECK(inputs->can_render_to_separate_surface ==
545 inputs->property_trees->non_root_surfaces_enabled); 547 inputs->property_trees->non_root_surfaces_enabled);
546 for (LayerImpl* layer : visible_layer_list) { 548 for (LayerImpl* layer : visible_layer_list) {
547 draw_property_utils::ComputeLayerDrawProperties(layer, 549 draw_property_utils::ComputeLayerDrawProperties(layer,
548 inputs->property_trees); 550 inputs->property_trees);
549 } 551 }
550 552
551 CalculateRenderSurfaceLayerList( 553 CalculateRenderSurfaceLayerList(
552 inputs->root_layer->layer_tree_impl(), inputs->property_trees, 554 inputs->root_layer->layer_tree_impl(), inputs->property_trees,
553 inputs->render_surface_layer_list, inputs->can_render_to_separate_surface, 555 inputs->render_surface_layer_list, inputs->can_render_to_separate_surface,
554 inputs->max_texture_size); 556 inputs->max_texture_size);
555 557
556 if (inputs->verify_clip_tree_calculations)
557 draw_property_utils::VerifyClipTreeCalculations(visible_layer_list,
558 inputs->property_trees);
559 if (inputs->verify_visible_rect_calculations)
560 draw_property_utils::VerifyVisibleRectsCalculations(visible_layer_list,
561 inputs->property_trees);
562 558
563 if (should_measure_property_tree_performance) { 559 if (should_measure_property_tree_performance) {
564 TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), 560 TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"),
565 "LayerTreeHostCommon::CalculateDrawProperties"); 561 "LayerTreeHostCommon::CalculateDrawProperties");
566 } 562 }
567 563
568 // A root layer render_surface should always exist after 564 // A root layer render_surface should always exist after
569 // CalculateDrawProperties. 565 // CalculateDrawProperties.
570 DCHECK(inputs->root_layer->GetRenderSurface()); 566 DCHECK(inputs->root_layer->GetRenderSurface());
571 } 567 }
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 644
649 PropertyTrees* GetPropertyTrees(Layer* layer) { 645 PropertyTrees* GetPropertyTrees(Layer* layer) {
650 return layer->layer_tree_host()->property_trees(); 646 return layer->layer_tree_host()->property_trees();
651 } 647 }
652 648
653 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { 649 PropertyTrees* GetPropertyTrees(LayerImpl* layer) {
654 return layer->layer_tree_impl()->property_trees(); 650 return layer->layer_tree_impl()->property_trees();
655 } 651 }
656 652
657 } // namespace cc 653 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698