OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |