| 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 |