| 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 798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 809 | 809 |
| 810 if (!root_layer()) | 810 if (!root_layer()) |
| 811 return false; | 811 return false; |
| 812 | 812 |
| 813 { | 813 { |
| 814 base::ElapsedTimer timer; | 814 base::ElapsedTimer timer; |
| 815 TRACE_EVENT2( | 815 TRACE_EVENT2( |
| 816 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", | 816 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", |
| 817 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); | 817 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); |
| 818 bool can_render_to_separate_surface = | 818 bool can_render_to_separate_surface = |
| 819 (layer_tree_host_impl_->GetDrawMode() != | 819 (!is_in_resourceless_software_draw_mode()); |
| 820 DRAW_MODE_RESOURCELESS_SOFTWARE); | |
| 821 | 820 |
| 822 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 821 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
| 823 root_layer(), DrawViewportSize(), | 822 root_layer(), DrawViewportSize(), |
| 824 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), | 823 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), |
| 825 current_page_scale_factor(), PageScaleLayer(), | 824 current_page_scale_factor(), PageScaleLayer(), |
| 826 InnerViewportScrollLayer(), OuterViewportScrollLayer(), | 825 InnerViewportScrollLayer(), OuterViewportScrollLayer(), |
| 827 elastic_overscroll()->Current(IsActiveTree()), | 826 elastic_overscroll()->Current(IsActiveTree()), |
| 828 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), | 827 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), |
| 829 settings().can_use_lcd_text, settings().layers_always_allowed_lcd_text, | 828 settings().can_use_lcd_text, settings().layers_always_allowed_lcd_text, |
| 830 can_render_to_separate_surface, | 829 can_render_to_separate_surface, |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 923 : layer_tree_host_impl_->pending_tree(); | 922 : layer_tree_host_impl_->pending_tree(); |
| 924 // If this is not the sync tree, then it is not safe to update lcd text | 923 // If this is not the sync tree, then it is not safe to update lcd text |
| 925 // as it causes invalidations and the tiles may be in use. | 924 // as it causes invalidations and the tiles may be in use. |
| 926 DCHECK_EQ(this, sync_tree); | 925 DCHECK_EQ(this, sync_tree); |
| 927 for (const auto& layer : picture_layers_) | 926 for (const auto& layer : picture_layers_) |
| 928 layer->UpdateCanUseLCDTextAfterCommit(); | 927 layer->UpdateCanUseLCDTextAfterCommit(); |
| 929 } | 928 } |
| 930 | 929 |
| 931 // Resourceless draw do not need tiles and should not affect existing tile | 930 // Resourceless draw do not need tiles and should not affect existing tile |
| 932 // priorities. | 931 // priorities. |
| 933 if (layer_tree_host_impl_->GetDrawMode() != DRAW_MODE_RESOURCELESS_SOFTWARE) { | 932 if (!is_in_resourceless_software_draw_mode()) { |
| 934 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles", | 933 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateDrawProperties::UpdateTiles", |
| 935 "IsActive", IsActiveTree(), "SourceFrameNumber", | 934 "IsActive", IsActiveTree(), "SourceFrameNumber", |
| 936 source_frame_number_); | 935 source_frame_number_); |
| 937 size_t layers_updated_count = 0; | 936 size_t layers_updated_count = 0; |
| 938 bool tile_priorities_updated = false; | 937 bool tile_priorities_updated = false; |
| 939 for (PictureLayerImpl* layer : picture_layers_) { | 938 for (PictureLayerImpl* layer : picture_layers_) { |
| 940 if (!layer->is_drawn_render_surface_layer_list_member()) | 939 if (!layer->is_drawn_render_surface_layer_list_member()) |
| 941 continue; | 940 continue; |
| 942 ++layers_updated_count; | 941 ++layers_updated_count; |
| 943 tile_priorities_updated |= layer->UpdateTiles(); | 942 tile_priorities_updated |= layer->UpdateTiles(); |
| (...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1592 for (const ClipNode* clip_node = clip_tree.Node(layer->clip_tree_index()); | 1591 for (const ClipNode* clip_node = clip_tree.Node(layer->clip_tree_index()); |
| 1593 clip_node->id > 1; clip_node = clip_tree.parent(clip_node)) { | 1592 clip_node->id > 1; clip_node = clip_tree.parent(clip_node)) { |
| 1594 if (clip_node->data.applies_local_clip) { | 1593 if (clip_node->data.applies_local_clip) { |
| 1595 const TransformNode* transform_node = | 1594 const TransformNode* transform_node = |
| 1596 transform_tree.Node(clip_node->data.target_id); | 1595 transform_tree.Node(clip_node->data.target_id); |
| 1597 gfx::Rect combined_clip_in_target_space = | 1596 gfx::Rect combined_clip_in_target_space = |
| 1598 gfx::ToEnclosingRect(clip_node->data.combined_clip_in_target_space); | 1597 gfx::ToEnclosingRect(clip_node->data.combined_clip_in_target_space); |
| 1599 | 1598 |
| 1600 const LayerImpl* target_layer = | 1599 const LayerImpl* target_layer = |
| 1601 layer->layer_tree_impl()->LayerById(transform_node->owner_id); | 1600 layer->layer_tree_impl()->LayerById(transform_node->owner_id); |
| 1602 DCHECK(transform_node->id == 0 || target_layer->render_surface()); | 1601 DCHECK(transform_node->id == 0 || target_layer->render_surface() || |
| 1602 layer->layer_tree_impl()->is_in_resourceless_software_draw_mode()); |
| 1603 gfx::Transform surface_screen_space_transform = | 1603 gfx::Transform surface_screen_space_transform = |
| 1604 transform_node->id == 0 | 1604 transform_node->id == 0 || |
| 1605 (layer->layer_tree_impl() |
| 1606 ->is_in_resourceless_software_draw_mode()) |
| 1605 ? gfx::Transform() | 1607 ? gfx::Transform() |
| 1606 : SurfaceScreenSpaceTransform(target_layer, transform_tree); | 1608 : SurfaceScreenSpaceTransform(target_layer, transform_tree); |
| 1607 if (!PointHitsRect(screen_space_point, surface_screen_space_transform, | 1609 if (!PointHitsRect(screen_space_point, surface_screen_space_transform, |
| 1608 combined_clip_in_target_space, NULL)) { | 1610 combined_clip_in_target_space, NULL)) { |
| 1609 return true; | 1611 return true; |
| 1610 } | 1612 } |
| 1611 } | 1613 } |
| 1612 const LayerImpl* clip_node_owner = | 1614 const LayerImpl* clip_node_owner = |
| 1613 layer->layer_tree_impl()->LayerById(clip_node->owner_id); | 1615 layer->layer_tree_impl()->LayerById(clip_node->owner_id); |
| 1614 if (clip_node_owner->render_surface() && | 1616 if (clip_node_owner->render_surface() && |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2031 } | 2033 } |
| 2032 | 2034 |
| 2033 void LayerTreeImpl::ResetAllChangeTracking() { | 2035 void LayerTreeImpl::ResetAllChangeTracking() { |
| 2034 layers_that_should_push_properties_.clear(); | 2036 layers_that_should_push_properties_.clear(); |
| 2035 for (auto* layer : *this) | 2037 for (auto* layer : *this) |
| 2036 layer->ResetChangeTracking(); | 2038 layer->ResetChangeTracking(); |
| 2037 property_trees_.ResetAllChangeTracking(); | 2039 property_trees_.ResetAllChangeTracking(); |
| 2038 } | 2040 } |
| 2039 | 2041 |
| 2040 } // namespace cc | 2042 } // namespace cc |
| OLD | NEW |