| 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_impl.h" | 5 #include "cc/trees/layer_tree_impl.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 812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 823 | 823 |
| 824 if (!root_layer()) | 824 if (!root_layer()) |
| 825 return false; | 825 return false; |
| 826 | 826 |
| 827 { | 827 { |
| 828 base::ElapsedTimer timer; | 828 base::ElapsedTimer timer; |
| 829 TRACE_EVENT2( | 829 TRACE_EVENT2( |
| 830 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", | 830 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", |
| 831 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); | 831 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); |
| 832 bool can_render_to_separate_surface = | 832 bool can_render_to_separate_surface = |
| 833 (layer_tree_host_impl_->GetDrawMode() != | 833 (!is_in_resourceless_software_draw_mode()); |
| 834 DRAW_MODE_RESOURCELESS_SOFTWARE); | |
| 835 | 834 |
| 836 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 835 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
| 837 root_layer(), DrawViewportSize(), | 836 root_layer(), DrawViewportSize(), |
| 838 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), | 837 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), |
| 839 current_page_scale_factor(), PageScaleLayer(), | 838 current_page_scale_factor(), PageScaleLayer(), |
| 840 InnerViewportScrollLayer(), OuterViewportScrollLayer(), | 839 InnerViewportScrollLayer(), OuterViewportScrollLayer(), |
| 841 elastic_overscroll()->Current(IsActiveTree()), | 840 elastic_overscroll()->Current(IsActiveTree()), |
| 842 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), | 841 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), |
| 843 settings().can_use_lcd_text, settings().layers_always_allowed_lcd_text, | 842 settings().can_use_lcd_text, settings().layers_always_allowed_lcd_text, |
| 844 can_render_to_separate_surface, | 843 can_render_to_separate_surface, |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 937 : layer_tree_host_impl_->pending_tree(); | 936 : layer_tree_host_impl_->pending_tree(); |
| 938 // If this is not the sync tree, then it is not safe to update lcd text | 937 // If this is not the sync tree, then it is not safe to update lcd text |
| 939 // as it causes invalidations and the tiles may be in use. | 938 // as it causes invalidations and the tiles may be in use. |
| 940 DCHECK_EQ(this, sync_tree); | 939 DCHECK_EQ(this, sync_tree); |
| 941 for (const auto& layer : picture_layers_) | 940 for (const auto& layer : picture_layers_) |
| 942 layer->UpdateCanUseLCDTextAfterCommit(); | 941 layer->UpdateCanUseLCDTextAfterCommit(); |
| 943 } | 942 } |
| 944 | 943 |
| 945 // Resourceless draw do not need tiles and should not affect existing tile | 944 // Resourceless draw do not need tiles and should not affect existing tile |
| 946 // priorities. | 945 // priorities. |
| 947 if (layer_tree_host_impl_->GetDrawMode() != DRAW_MODE_RESOURCELESS_SOFTWARE) { | 946 if (!is_in_resourceless_software_draw_mode()) { |
| 948 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles", | 947 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles", |
| 949 "IsActive", IsActiveTree(), "SourceFrameNumber", | 948 "IsActive", IsActiveTree(), "SourceFrameNumber", |
| 950 source_frame_number_); | 949 source_frame_number_); |
| 951 size_t layers_updated_count = 0; | 950 size_t layers_updated_count = 0; |
| 952 bool tile_priorities_updated = false; | 951 bool tile_priorities_updated = false; |
| 953 for (PictureLayerImpl* layer : picture_layers_) { | 952 for (PictureLayerImpl* layer : picture_layers_) { |
| 954 if (!layer->is_drawn_render_surface_layer_list_member()) | 953 if (!layer->is_drawn_render_surface_layer_list_member()) |
| 955 continue; | 954 continue; |
| 956 ++layers_updated_count; | 955 ++layers_updated_count; |
| 957 tile_priorities_updated |= layer->UpdateTiles(); | 956 tile_priorities_updated |= layer->UpdateTiles(); |
| (...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1649 for (const ClipNode* clip_node = clip_tree.Node(layer->clip_tree_index()); | 1648 for (const ClipNode* clip_node = clip_tree.Node(layer->clip_tree_index()); |
| 1650 clip_node->id > 1; clip_node = clip_tree.parent(clip_node)) { | 1649 clip_node->id > 1; clip_node = clip_tree.parent(clip_node)) { |
| 1651 if (clip_node->data.applies_local_clip) { | 1650 if (clip_node->data.applies_local_clip) { |
| 1652 const TransformNode* transform_node = | 1651 const TransformNode* transform_node = |
| 1653 transform_tree.Node(clip_node->data.target_id); | 1652 transform_tree.Node(clip_node->data.target_id); |
| 1654 gfx::Rect combined_clip_in_target_space = | 1653 gfx::Rect combined_clip_in_target_space = |
| 1655 gfx::ToEnclosingRect(clip_node->data.combined_clip_in_target_space); | 1654 gfx::ToEnclosingRect(clip_node->data.combined_clip_in_target_space); |
| 1656 | 1655 |
| 1657 const LayerImpl* target_layer = | 1656 const LayerImpl* target_layer = |
| 1658 layer->layer_tree_impl()->LayerById(transform_node->owner_id); | 1657 layer->layer_tree_impl()->LayerById(transform_node->owner_id); |
| 1659 DCHECK(transform_node->id == 0 || target_layer->render_surface()); | 1658 DCHECK(transform_node->id == 0 || target_layer->render_surface() || |
| 1659 layer->layer_tree_impl()->is_in_resourceless_software_draw_mode()); |
| 1660 gfx::Transform surface_screen_space_transform = | 1660 gfx::Transform surface_screen_space_transform = |
| 1661 transform_node->id == 0 | 1661 transform_node->id == 0 || |
| 1662 (layer->layer_tree_impl() |
| 1663 ->is_in_resourceless_software_draw_mode()) |
| 1662 ? gfx::Transform() | 1664 ? gfx::Transform() |
| 1663 : SurfaceScreenSpaceTransform(target_layer, transform_tree); | 1665 : SurfaceScreenSpaceTransform(target_layer, transform_tree); |
| 1664 if (!PointHitsRect(screen_space_point, surface_screen_space_transform, | 1666 if (!PointHitsRect(screen_space_point, surface_screen_space_transform, |
| 1665 combined_clip_in_target_space, NULL)) { | 1667 combined_clip_in_target_space, NULL)) { |
| 1666 return true; | 1668 return true; |
| 1667 } | 1669 } |
| 1668 } | 1670 } |
| 1669 const LayerImpl* clip_node_owner = | 1671 const LayerImpl* clip_node_owner = |
| 1670 layer->layer_tree_impl()->LayerById(clip_node->owner_id); | 1672 layer->layer_tree_impl()->LayerById(clip_node->owner_id); |
| 1671 if (clip_node_owner->render_surface() && | 1673 if (clip_node_owner->render_surface() && |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2094 } | 2096 } |
| 2095 | 2097 |
| 2096 void LayerTreeImpl::ResetAllChangeTracking() { | 2098 void LayerTreeImpl::ResetAllChangeTracking() { |
| 2097 layers_that_should_push_properties_.clear(); | 2099 layers_that_should_push_properties_.clear(); |
| 2098 for (auto* layer : *this) | 2100 for (auto* layer : *this) |
| 2099 layer->ResetChangeTracking(); | 2101 layer->ResetChangeTracking(); |
| 2100 property_trees_.ResetAllChangeTracking(); | 2102 property_trees_.ResetAllChangeTracking(); |
| 2101 } | 2103 } |
| 2102 | 2104 |
| 2103 } // namespace cc | 2105 } // namespace cc |
| OLD | NEW |