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 996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); | 1007 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); |
1008 } | 1008 } |
1009 | 1009 |
1010 void LayerTreeImpl::SetElementIdsForTesting() { | 1010 void LayerTreeImpl::SetElementIdsForTesting() { |
1011 LayerListIterator<LayerImpl> it(root_layer_for_testing_); | 1011 LayerListIterator<LayerImpl> it(root_layer_for_testing_); |
1012 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) { | 1012 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) { |
1013 SetElementIdForTesting(*it); | 1013 SetElementIdForTesting(*it); |
1014 } | 1014 } |
1015 } | 1015 } |
1016 | 1016 |
1017 bool LayerTreeImpl::UpdateDrawProperties( | 1017 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { |
1018 bool update_lcd_text, | |
1019 bool force_skip_verify_visible_rect_calculations) { | |
1020 if (!needs_update_draw_properties_) | 1018 if (!needs_update_draw_properties_) |
1021 return true; | 1019 return true; |
1022 | 1020 |
1023 // Calling UpdateDrawProperties must clear this flag, so there can be no | 1021 // Calling UpdateDrawProperties must clear this flag, so there can be no |
1024 // early outs before this. | 1022 // early outs before this. |
1025 needs_update_draw_properties_ = false; | 1023 needs_update_draw_properties_ = false; |
1026 | 1024 |
1027 // For max_texture_size. When a new output surface is received the needs | 1025 // For max_texture_size. When a new output surface is received the needs |
1028 // update draw properties flag is set again. | 1026 // update draw properties flag is set again. |
1029 if (!layer_tree_host_impl_->compositor_frame_sink()) | 1027 if (!layer_tree_host_impl_->compositor_frame_sink()) |
(...skipping 11 matching lines...) Expand all Loading... |
1041 TRACE_EVENT2( | 1039 TRACE_EVENT2( |
1042 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", | 1040 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", |
1043 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); | 1041 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); |
1044 // TODO(crbug.com/692780): Remove this option entirely once this get to | 1042 // TODO(crbug.com/692780): Remove this option entirely once this get to |
1045 // stable and proves it works. | 1043 // stable and proves it works. |
1046 bool can_render_to_separate_surface = true; | 1044 bool can_render_to_separate_surface = true; |
1047 | 1045 |
1048 // We verify visible rect calculations whenever we verify clip tree | 1046 // We verify visible rect calculations whenever we verify clip tree |
1049 // calculations except when this function is explicitly passed a flag asking | 1047 // calculations except when this function is explicitly passed a flag asking |
1050 // us to skip it. | 1048 // us to skip it. |
1051 bool verify_visible_rect_calculations = | |
1052 force_skip_verify_visible_rect_calculations | |
1053 ? false | |
1054 : settings().verify_clip_tree_calculations; | |
1055 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 1049 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
1056 layer_list_[0], DrawViewportSize(), | 1050 layer_list_[0], DrawViewportSize(), |
1057 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), | 1051 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), |
1058 current_page_scale_factor(), PageScaleLayer(), | 1052 current_page_scale_factor(), PageScaleLayer(), |
1059 InnerViewportScrollLayer(), OuterViewportScrollLayer(), | 1053 InnerViewportScrollLayer(), OuterViewportScrollLayer(), |
1060 elastic_overscroll()->Current(IsActiveTree()), | 1054 elastic_overscroll()->Current(IsActiveTree()), |
1061 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), | 1055 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), |
1062 can_render_to_separate_surface, | 1056 can_render_to_separate_surface, |
1063 settings().layer_transforms_should_scale_layer_contents, | 1057 settings().layer_transforms_should_scale_layer_contents, |
1064 settings().verify_clip_tree_calculations, | 1058 &render_surface_layer_list_, &property_trees_); |
1065 verify_visible_rect_calculations, &render_surface_layer_list_, | |
1066 &property_trees_); | |
1067 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 1059 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
1068 if (const char* client_name = GetClientNameForMetrics()) { | 1060 if (const char* client_name = GetClientNameForMetrics()) { |
1069 UMA_HISTOGRAM_COUNTS( | 1061 UMA_HISTOGRAM_COUNTS( |
1070 base::StringPrintf( | 1062 base::StringPrintf( |
1071 "Compositing.%s.LayerTreeImpl.CalculateDrawPropertiesUs", | 1063 "Compositing.%s.LayerTreeImpl.CalculateDrawPropertiesUs", |
1072 client_name), | 1064 client_name), |
1073 timer.Elapsed().InMicroseconds()); | 1065 timer.Elapsed().InMicroseconds()); |
1074 UMA_HISTOGRAM_COUNTS_100( | 1066 UMA_HISTOGRAM_COUNTS_100( |
1075 base::StringPrintf("Compositing.%s.NumRenderSurfaces", client_name), | 1067 base::StringPrintf("Compositing.%s.NumRenderSurfaces", client_name), |
1076 base::saturated_cast<int>(render_surface_layer_list_.size())); | 1068 base::saturated_cast<int>(render_surface_layer_list_.size())); |
(...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2149 | 2141 |
2150 void LayerTreeImpl::ResetAllChangeTracking() { | 2142 void LayerTreeImpl::ResetAllChangeTracking() { |
2151 layers_that_should_push_properties_.clear(); | 2143 layers_that_should_push_properties_.clear(); |
2152 // Iterate over all layers, including masks. | 2144 // Iterate over all layers, including masks. |
2153 for (auto& layer : *layers_) | 2145 for (auto& layer : *layers_) |
2154 layer->ResetChangeTracking(); | 2146 layer->ResetChangeTracking(); |
2155 property_trees_.ResetAllChangeTracking(); | 2147 property_trees_.ResetAllChangeTracking(); |
2156 } | 2148 } |
2157 | 2149 |
2158 } // namespace cc | 2150 } // namespace cc |
OLD | NEW |