Chromium Code Reviews| 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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 179 for (int i = 0; i < proto.scrolls_size(); ++i) { | 179 for (int i = 0; i < proto.scrolls_size(); ++i) { |
| 180 scrolls.push_back(LayerTreeHostCommon::ScrollUpdateInfo()); | 180 scrolls.push_back(LayerTreeHostCommon::ScrollUpdateInfo()); |
| 181 scrolls[i].FromProtobuf(proto.scrolls(i)); | 181 scrolls[i].FromProtobuf(proto.scrolls(i)); |
| 182 } | 182 } |
| 183 page_scale_delta = proto.page_scale_delta(); | 183 page_scale_delta = proto.page_scale_delta(); |
| 184 elastic_overscroll_delta = ProtoToVector2dF(proto.elastic_overscroll_delta()); | 184 elastic_overscroll_delta = ProtoToVector2dF(proto.elastic_overscroll_delta()); |
| 185 top_controls_delta = proto.top_controls_delta(); | 185 top_controls_delta = proto.top_controls_delta(); |
| 186 } | 186 } |
| 187 | 187 |
| 188 static inline void SetMaskLayersAreDrawnRenderSurfaceLayerListMembers( | 188 static inline void SetMaskLayersAreDrawnRenderSurfaceLayerListMembers( |
| 189 LayerImpl* layer) { | 189 LayerImpl* layer, |
| 190 if (layer->mask_layer()) | 190 PropertyTrees* property_trees) { |
| 191 if (layer->mask_layer()) { | |
| 191 layer->mask_layer()->set_is_drawn_render_surface_layer_list_member(true); | 192 layer->mask_layer()->set_is_drawn_render_surface_layer_list_member(true); |
| 193 draw_property_utils::ComputeMaskDrawProperties(layer->mask_layer(), | |
| 194 property_trees); | |
| 195 } | |
| 192 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) { | 196 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) { |
| 193 layer->replica_layer() | 197 layer->replica_layer() |
| 194 ->mask_layer() | 198 ->mask_layer() |
| 195 ->set_is_drawn_render_surface_layer_list_member(true); | 199 ->set_is_drawn_render_surface_layer_list_member(true); |
| 200 draw_property_utils::ComputeMaskDrawProperties( | |
| 201 layer->replica_layer()->mask_layer(), property_trees); | |
| 196 } | 202 } |
| 197 } | 203 } |
| 198 | 204 |
| 199 static inline void ClearLayerIsDrawnRenderSurfaceLayerListMember( | 205 static inline void ClearLayerIsDrawnRenderSurfaceLayerListMember( |
| 200 LayerImpl* layer) { | 206 LayerImpl* layer) { |
| 201 layer->set_is_drawn_render_surface_layer_list_member(false); | 207 layer->set_is_drawn_render_surface_layer_list_member(false); |
| 202 if (layer->mask_layer()) | 208 if (layer->mask_layer()) |
| 203 layer->mask_layer()->set_is_drawn_render_surface_layer_list_member(false); | 209 layer->mask_layer()->set_is_drawn_render_surface_layer_list_member(false); |
| 204 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) { | 210 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) { |
| 205 layer->replica_layer() | 211 layer->replica_layer() |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 451 // root surface. | 457 // root surface. |
| 452 DCHECK(!target_surface->layer_list().empty() || | 458 DCHECK(!target_surface->layer_list().empty() || |
| 453 target_surface->render_target() == target_surface); | 459 target_surface->render_target() == target_surface); |
| 454 } else { | 460 } else { |
| 455 // This layer was removed when the target itself was cleared. | 461 // This layer was removed when the target itself was cleared. |
| 456 DCHECK(target_surface->layer_list().empty()); | 462 DCHECK(target_surface->layer_list().empty()); |
| 457 } | 463 } |
| 458 } | 464 } |
| 459 continue; | 465 continue; |
| 460 } | 466 } |
| 461 SetMaskLayersAreDrawnRenderSurfaceLayerListMembers(layer); | 467 SetMaskLayersAreDrawnRenderSurfaceLayerListMembers(layer, property_trees); |
| 462 final_surface_list->push_back(layer); | 468 final_surface_list->push_back(layer); |
| 463 } | 469 } |
| 464 } | 470 } |
| 465 | 471 |
| 466 static void CalculateRenderSurfaceLayerList( | 472 static void CalculateRenderSurfaceLayerList( |
| 467 LayerTreeImpl* layer_tree_impl, | 473 LayerTreeImpl* layer_tree_impl, |
| 468 PropertyTrees* property_trees, | 474 PropertyTrees* property_trees, |
| 469 LayerImplList* render_surface_layer_list, | 475 LayerImplList* render_surface_layer_list, |
| 470 const bool can_render_to_separate_surface, | 476 const bool can_render_to_separate_surface, |
| 471 const int max_texture_size) { | 477 const int max_texture_size) { |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 484 ComputeSurfaceContentRects(layer_tree_impl, property_trees, | 490 ComputeSurfaceContentRects(layer_tree_impl, property_trees, |
| 485 &initial_render_surface_list, max_texture_size); | 491 &initial_render_surface_list, max_texture_size); |
| 486 ComputeListOfNonEmptySurfaces(layer_tree_impl, property_trees, | 492 ComputeListOfNonEmptySurfaces(layer_tree_impl, property_trees, |
| 487 &initial_render_surface_list, | 493 &initial_render_surface_list, |
| 488 render_surface_layer_list); | 494 render_surface_layer_list); |
| 489 | 495 |
| 490 ComputeLayerScrollsDrawnDescendants(layer_tree_impl, | 496 ComputeLayerScrollsDrawnDescendants(layer_tree_impl, |
| 491 &property_trees->scroll_tree); | 497 &property_trees->scroll_tree); |
| 492 } | 498 } |
| 493 | 499 |
| 494 static void ComputeMaskLayerDrawProperties(const LayerImpl* layer, | |
| 495 LayerImpl* mask_layer) { | |
| 496 DrawProperties& mask_layer_draw_properties = mask_layer->draw_properties(); | |
| 497 mask_layer_draw_properties.visible_layer_rect = gfx::Rect(layer->bounds()); | |
| 498 mask_layer_draw_properties.target_space_transform = | |
| 499 layer->draw_properties().target_space_transform; | |
|
ajuma
2016/06/07 17:59:39
Target space transform used to be needed to pick a
| |
| 500 mask_layer_draw_properties.screen_space_transform = | |
| 501 layer->draw_properties().screen_space_transform; | |
| 502 mask_layer_draw_properties.maximum_animation_contents_scale = | |
| 503 layer->draw_properties().maximum_animation_contents_scale; | |
| 504 mask_layer_draw_properties.starting_animation_contents_scale = | |
| 505 layer->draw_properties().starting_animation_contents_scale; | |
|
ajuma
2016/06/07 17:59:39
We were previously setting but never using animati
| |
| 506 } | |
| 507 | |
| 508 void CalculateDrawPropertiesInternal( | 500 void CalculateDrawPropertiesInternal( |
| 509 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs, | 501 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs, |
| 510 PropertyTreeOption property_tree_option) { | 502 PropertyTreeOption property_tree_option) { |
| 511 inputs->render_surface_layer_list->clear(); | 503 inputs->render_surface_layer_list->clear(); |
| 512 | 504 |
| 513 const bool should_measure_property_tree_performance = | 505 const bool should_measure_property_tree_performance = |
| 514 property_tree_option == BUILD_PROPERTY_TREES_IF_NEEDED; | 506 property_tree_option == BUILD_PROPERTY_TREES_IF_NEEDED; |
| 515 | 507 |
| 516 LayerImplList visible_layer_list; | 508 LayerImplList visible_layer_list; |
| 517 switch (property_tree_option) { | 509 switch (property_tree_option) { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 583 if (should_measure_property_tree_performance) { | 575 if (should_measure_property_tree_performance) { |
| 584 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), | 576 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), |
| 585 "LayerTreeHostCommon::CalculateDrawProperties"); | 577 "LayerTreeHostCommon::CalculateDrawProperties"); |
| 586 } | 578 } |
| 587 | 579 |
| 588 DCHECK(inputs->can_render_to_separate_surface == | 580 DCHECK(inputs->can_render_to_separate_surface == |
| 589 inputs->property_trees->non_root_surfaces_enabled); | 581 inputs->property_trees->non_root_surfaces_enabled); |
| 590 for (LayerImpl* layer : visible_layer_list) { | 582 for (LayerImpl* layer : visible_layer_list) { |
| 591 draw_property_utils::ComputeLayerDrawProperties(layer, | 583 draw_property_utils::ComputeLayerDrawProperties(layer, |
| 592 inputs->property_trees); | 584 inputs->property_trees); |
| 593 if (layer->mask_layer()) | |
| 594 ComputeMaskLayerDrawProperties(layer, layer->mask_layer()); | |
| 595 LayerImpl* replica_mask_layer = | |
| 596 layer->replica_layer() ? layer->replica_layer()->mask_layer() : nullptr; | |
| 597 if (replica_mask_layer) | |
| 598 ComputeMaskLayerDrawProperties(layer, replica_mask_layer); | |
| 599 } | 585 } |
| 600 | 586 |
| 601 CalculateRenderSurfaceLayerList( | 587 CalculateRenderSurfaceLayerList( |
| 602 inputs->root_layer->layer_tree_impl(), inputs->property_trees, | 588 inputs->root_layer->layer_tree_impl(), inputs->property_trees, |
| 603 inputs->render_surface_layer_list, inputs->can_render_to_separate_surface, | 589 inputs->render_surface_layer_list, inputs->can_render_to_separate_surface, |
| 604 inputs->max_texture_size); | 590 inputs->max_texture_size); |
| 605 | 591 |
| 606 if (inputs->verify_clip_tree_calculations) | 592 if (inputs->verify_clip_tree_calculations) |
| 607 draw_property_utils::VerifyClipTreeCalculations(visible_layer_list, | 593 draw_property_utils::VerifyClipTreeCalculations(visible_layer_list, |
| 608 inputs->property_trees); | 594 inputs->property_trees); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 697 | 683 |
| 698 PropertyTrees* GetPropertyTrees(Layer* layer) { | 684 PropertyTrees* GetPropertyTrees(Layer* layer) { |
| 699 return layer->layer_tree_host()->property_trees(); | 685 return layer->layer_tree_host()->property_trees(); |
| 700 } | 686 } |
| 701 | 687 |
| 702 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { | 688 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { |
| 703 return layer->layer_tree_impl()->property_trees(); | 689 return layer->layer_tree_impl()->property_trees(); |
| 704 } | 690 } |
| 705 | 691 |
| 706 } // namespace cc | 692 } // namespace cc |
| OLD | NEW |