| 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.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 gpu_rasterization_histogram_recorded_ = true; | 735 gpu_rasterization_histogram_recorded_ = true; |
| 736 } | 736 } |
| 737 | 737 |
| 738 void LayerTreeHost::BuildPropertyTreesForTesting() { | 738 void LayerTreeHost::BuildPropertyTreesForTesting() { |
| 739 PropertyTreeBuilder::PreCalculateMetaInformation(layer_tree_->root_layer()); | 739 PropertyTreeBuilder::PreCalculateMetaInformation(layer_tree_->root_layer()); |
| 740 gfx::Transform identity_transform; | 740 gfx::Transform identity_transform; |
| 741 PropertyTreeBuilder::BuildPropertyTrees( | 741 PropertyTreeBuilder::BuildPropertyTrees( |
| 742 layer_tree_->root_layer(), layer_tree_->page_scale_layer(), | 742 layer_tree_->root_layer(), layer_tree_->page_scale_layer(), |
| 743 layer_tree_->inner_viewport_scroll_layer(), | 743 layer_tree_->inner_viewport_scroll_layer(), |
| 744 layer_tree_->outer_viewport_scroll_layer(), | 744 layer_tree_->outer_viewport_scroll_layer(), |
| 745 layer_tree_->overscroll_elasticity_layer(), elastic_overscroll_, | 745 layer_tree_->overscroll_elasticity_layer(), |
| 746 layer_tree_->page_scale_factor(), layer_tree_->device_scale_factor(), | 746 layer_tree_->elastic_overscroll(), layer_tree_->page_scale_factor(), |
| 747 layer_tree_->device_scale_factor(), |
| 747 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform, | 748 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform, |
| 748 layer_tree_->property_trees()); | 749 layer_tree_->property_trees()); |
| 749 } | 750 } |
| 750 | 751 |
| 751 bool LayerTreeHost::UsingSharedMemoryResources() { | 752 bool LayerTreeHost::UsingSharedMemoryResources() { |
| 752 return GetRendererCapabilities().using_shared_memory_resources; | 753 return GetRendererCapabilities().using_shared_memory_resources; |
| 753 } | 754 } |
| 754 | 755 |
| 755 bool LayerTreeHost::DoUpdateLayers(Layer* root_layer) { | 756 bool LayerTreeHost::DoUpdateLayers(Layer* root_layer) { |
| 756 TRACE_EVENT1("cc", "LayerTreeHost::DoUpdateLayers", "source_frame_number", | 757 TRACE_EVENT1("cc", "LayerTreeHost::DoUpdateLayers", "source_frame_number", |
| (...skipping 24 matching lines...) Expand all Loading... |
| 781 PropertyTreeBuilder::PreCalculateMetaInformation(root_layer); | 782 PropertyTreeBuilder::PreCalculateMetaInformation(root_layer); |
| 782 bool can_render_to_separate_surface = true; | 783 bool can_render_to_separate_surface = true; |
| 783 PropertyTrees* property_trees = layer_tree_->property_trees(); | 784 PropertyTrees* property_trees = layer_tree_->property_trees(); |
| 784 if (!settings_.use_layer_lists) { | 785 if (!settings_.use_layer_lists) { |
| 785 // If use_layer_lists is set, then the property trees should have been | 786 // If use_layer_lists is set, then the property trees should have been |
| 786 // built by the client already. | 787 // built by the client already. |
| 787 PropertyTreeBuilder::BuildPropertyTrees( | 788 PropertyTreeBuilder::BuildPropertyTrees( |
| 788 root_layer, page_scale_layer, | 789 root_layer, page_scale_layer, |
| 789 layer_tree_->inner_viewport_scroll_layer(), | 790 layer_tree_->inner_viewport_scroll_layer(), |
| 790 layer_tree_->outer_viewport_scroll_layer(), | 791 layer_tree_->outer_viewport_scroll_layer(), |
| 791 layer_tree_->overscroll_elasticity_layer(), elastic_overscroll_, | 792 layer_tree_->overscroll_elasticity_layer(), |
| 792 layer_tree_->page_scale_factor(), layer_tree_->device_scale_factor(), | 793 layer_tree_->elastic_overscroll(), layer_tree_->page_scale_factor(), |
| 794 layer_tree_->device_scale_factor(), |
| 793 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform, | 795 gfx::Rect(layer_tree_->device_viewport_size()), identity_transform, |
| 794 property_trees); | 796 property_trees); |
| 795 TRACE_EVENT_INSTANT1("cc", | 797 TRACE_EVENT_INSTANT1("cc", |
| 796 "LayerTreeHost::UpdateLayers_BuiltPropertyTrees", | 798 "LayerTreeHost::UpdateLayers_BuiltPropertyTrees", |
| 797 TRACE_EVENT_SCOPE_THREAD, "property_trees", | 799 TRACE_EVENT_SCOPE_THREAD, "property_trees", |
| 798 property_trees->AsTracedValue()); | 800 property_trees->AsTracedValue()); |
| 799 } else { | 801 } else { |
| 800 TRACE_EVENT_INSTANT1("cc", | 802 TRACE_EVENT_INSTANT1("cc", |
| 801 "LayerTreeHost::UpdateLayers_ReceivedPropertyTrees", | 803 "LayerTreeHost::UpdateLayers_ReceivedPropertyTrees", |
| 802 TRACE_EVENT_SCOPE_THREAD, "property_trees", | 804 TRACE_EVENT_SCOPE_THREAD, "property_trees", |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 842 // it to the client. If the client comes back and sets it to the same | 844 // it to the client. If the client comes back and sets it to the same |
| 843 // value, then the layer can early out without needing a full commit. | 845 // value, then the layer can early out without needing a full commit. |
| 844 if (layer_tree_->inner_viewport_scroll_layer()) { | 846 if (layer_tree_->inner_viewport_scroll_layer()) { |
| 845 layer_tree_->inner_viewport_scroll_layer()->SetScrollOffsetFromImplSide( | 847 layer_tree_->inner_viewport_scroll_layer()->SetScrollOffsetFromImplSide( |
| 846 gfx::ScrollOffsetWithDelta( | 848 gfx::ScrollOffsetWithDelta( |
| 847 layer_tree_->inner_viewport_scroll_layer()->scroll_offset(), | 849 layer_tree_->inner_viewport_scroll_layer()->scroll_offset(), |
| 848 inner_viewport_scroll_delta)); | 850 inner_viewport_scroll_delta)); |
| 849 } | 851 } |
| 850 | 852 |
| 851 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); | 853 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); |
| 852 elastic_overscroll_ += info->elastic_overscroll_delta; | 854 layer_tree_->SetElasticOverscrollFromImplSide( |
| 855 layer_tree_->elastic_overscroll() + info->elastic_overscroll_delta); |
| 853 // TODO(ccameron): pass the elastic overscroll here so that input events | 856 // TODO(ccameron): pass the elastic overscroll here so that input events |
| 854 // may be translated appropriately. | 857 // may be translated appropriately. |
| 855 client_->ApplyViewportDeltas(inner_viewport_scroll_delta, gfx::Vector2dF(), | 858 client_->ApplyViewportDeltas(inner_viewport_scroll_delta, gfx::Vector2dF(), |
| 856 info->elastic_overscroll_delta, | 859 info->elastic_overscroll_delta, |
| 857 info->page_scale_delta, | 860 info->page_scale_delta, |
| 858 info->top_controls_delta); | 861 info->top_controls_delta); |
| 859 SetNeedsUpdateLayers(); | 862 SetNeedsUpdateLayers(); |
| 860 } | 863 } |
| 861 | 864 |
| 862 void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) { | 865 void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) { |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1083 | 1086 |
| 1084 LayerProtoConverter::SerializeLayerProperties(this, | 1087 LayerProtoConverter::SerializeLayerProperties(this, |
| 1085 proto->mutable_layer_updates()); | 1088 proto->mutable_layer_updates()); |
| 1086 | 1089 |
| 1087 std::vector<PictureData> pictures = | 1090 std::vector<PictureData> pictures = |
| 1088 engine_picture_cache_->CalculateCacheUpdateAndFlush(); | 1091 engine_picture_cache_->CalculateCacheUpdateAndFlush(); |
| 1089 proto::PictureDataVectorToSkPicturesProto(pictures, | 1092 proto::PictureDataVectorToSkPicturesProto(pictures, |
| 1090 proto->mutable_pictures()); | 1093 proto->mutable_pictures()); |
| 1091 | 1094 |
| 1092 debug_state_.ToProtobuf(proto->mutable_debug_state()); | 1095 debug_state_.ToProtobuf(proto->mutable_debug_state()); |
| 1093 Vector2dFToProto(elastic_overscroll_, proto->mutable_elastic_overscroll()); | |
| 1094 proto->set_has_gpu_rasterization_trigger(has_gpu_rasterization_trigger_); | 1096 proto->set_has_gpu_rasterization_trigger(has_gpu_rasterization_trigger_); |
| 1095 proto->set_content_is_suitable_for_gpu_rasterization( | 1097 proto->set_content_is_suitable_for_gpu_rasterization( |
| 1096 content_is_suitable_for_gpu_rasterization_); | 1098 content_is_suitable_for_gpu_rasterization_); |
| 1097 proto->set_id(id_); | 1099 proto->set_id(id_); |
| 1098 proto->set_next_commit_forces_redraw(next_commit_forces_redraw_); | 1100 proto->set_next_commit_forces_redraw(next_commit_forces_redraw_); |
| 1099 | 1101 |
| 1100 proto->set_surface_client_id(surface_client_id_); | 1102 proto->set_surface_client_id(surface_client_id_); |
| 1101 proto->set_next_surface_sequence(next_surface_sequence_); | 1103 proto->set_next_surface_sequence(next_surface_sequence_); |
| 1102 | 1104 |
| 1103 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID( | 1105 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID( |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1118 SkPicturesProtoToPictureDataVector(proto_pictures); | 1120 SkPicturesProtoToPictureDataVector(proto_pictures); |
| 1119 client_picture_cache_->ApplyCacheUpdate(pictures); | 1121 client_picture_cache_->ApplyCacheUpdate(pictures); |
| 1120 | 1122 |
| 1121 LayerProtoConverter::DeserializeLayerProperties(layer_tree_->root_layer(), | 1123 LayerProtoConverter::DeserializeLayerProperties(layer_tree_->root_layer(), |
| 1122 proto.layer_updates()); | 1124 proto.layer_updates()); |
| 1123 | 1125 |
| 1124 // The deserialization is finished, so now clear the cache. | 1126 // The deserialization is finished, so now clear the cache. |
| 1125 client_picture_cache_->Flush(); | 1127 client_picture_cache_->Flush(); |
| 1126 | 1128 |
| 1127 debug_state_.FromProtobuf(proto.debug_state()); | 1129 debug_state_.FromProtobuf(proto.debug_state()); |
| 1128 elastic_overscroll_ = ProtoToVector2dF(proto.elastic_overscroll()); | |
| 1129 has_gpu_rasterization_trigger_ = proto.has_gpu_rasterization_trigger(); | 1130 has_gpu_rasterization_trigger_ = proto.has_gpu_rasterization_trigger(); |
| 1130 content_is_suitable_for_gpu_rasterization_ = | 1131 content_is_suitable_for_gpu_rasterization_ = |
| 1131 proto.content_is_suitable_for_gpu_rasterization(); | 1132 proto.content_is_suitable_for_gpu_rasterization(); |
| 1132 id_ = proto.id(); | 1133 id_ = proto.id(); |
| 1133 next_commit_forces_redraw_ = proto.next_commit_forces_redraw(); | 1134 next_commit_forces_redraw_ = proto.next_commit_forces_redraw(); |
| 1134 | 1135 |
| 1135 surface_client_id_ = proto.surface_client_id(); | 1136 surface_client_id_ = proto.surface_client_id(); |
| 1136 next_surface_sequence_ = proto.next_surface_sequence(); | 1137 next_surface_sequence_ = proto.next_surface_sequence(); |
| 1137 } | 1138 } |
| 1138 | 1139 |
| 1139 AnimationHost* LayerTreeHost::animation_host() const { | 1140 AnimationHost* LayerTreeHost::animation_host() const { |
| 1140 return layer_tree_->animation_host(); | 1141 return layer_tree_->animation_host(); |
| 1141 } | 1142 } |
| 1142 | 1143 |
| 1143 } // namespace cc | 1144 } // namespace cc |
| OLD | NEW |