| 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 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1019 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); | 1019 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); |
| 1020 } | 1020 } |
| 1021 | 1021 |
| 1022 void LayerTreeImpl::SetElementIdsForTesting() { | 1022 void LayerTreeImpl::SetElementIdsForTesting() { |
| 1023 LayerListIterator<LayerImpl> it(root_layer_for_testing_); | 1023 LayerListIterator<LayerImpl> it(root_layer_for_testing_); |
| 1024 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) { | 1024 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) { |
| 1025 SetElementIdForTesting(*it); | 1025 SetElementIdForTesting(*it); |
| 1026 } | 1026 } |
| 1027 } | 1027 } |
| 1028 | 1028 |
| 1029 bool LayerTreeImpl::UpdateDrawProperties( | 1029 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { |
| 1030 bool update_lcd_text, | |
| 1031 bool force_skip_verify_visible_rect_calculations) { | |
| 1032 if (!needs_update_draw_properties_) | 1030 if (!needs_update_draw_properties_) |
| 1033 return true; | 1031 return true; |
| 1034 | 1032 |
| 1035 // Calling UpdateDrawProperties must clear this flag, so there can be no | 1033 // Calling UpdateDrawProperties must clear this flag, so there can be no |
| 1036 // early outs before this. | 1034 // early outs before this. |
| 1037 needs_update_draw_properties_ = false; | 1035 needs_update_draw_properties_ = false; |
| 1038 | 1036 |
| 1039 // For max_texture_size. When a new output surface is received the needs | 1037 // For max_texture_size. When a new output surface is received the needs |
| 1040 // update draw properties flag is set again. | 1038 // update draw properties flag is set again. |
| 1041 if (!layer_tree_host_impl_->compositor_frame_sink()) | 1039 if (!layer_tree_host_impl_->compositor_frame_sink()) |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1053 TRACE_EVENT2( | 1051 TRACE_EVENT2( |
| 1054 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", | 1052 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", |
| 1055 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); | 1053 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); |
| 1056 // TODO(crbug.com/692780): Remove this option entirely once this get to | 1054 // TODO(crbug.com/692780): Remove this option entirely once this get to |
| 1057 // stable and proves it works. | 1055 // stable and proves it works. |
| 1058 bool can_render_to_separate_surface = true; | 1056 bool can_render_to_separate_surface = true; |
| 1059 | 1057 |
| 1060 // We verify visible rect calculations whenever we verify clip tree | 1058 // We verify visible rect calculations whenever we verify clip tree |
| 1061 // calculations except when this function is explicitly passed a flag asking | 1059 // calculations except when this function is explicitly passed a flag asking |
| 1062 // us to skip it. | 1060 // us to skip it. |
| 1063 bool verify_visible_rect_calculations = | |
| 1064 force_skip_verify_visible_rect_calculations | |
| 1065 ? false | |
| 1066 : settings().verify_clip_tree_calculations; | |
| 1067 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 1061 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
| 1068 layer_list_[0], DrawViewportSize(), | 1062 layer_list_[0], DrawViewportSize(), |
| 1069 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), | 1063 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), |
| 1070 current_page_scale_factor(), PageScaleLayer(), | 1064 current_page_scale_factor(), PageScaleLayer(), |
| 1071 InnerViewportScrollLayer(), OuterViewportScrollLayer(), | 1065 InnerViewportScrollLayer(), OuterViewportScrollLayer(), |
| 1072 elastic_overscroll()->Current(IsActiveTree()), | 1066 elastic_overscroll()->Current(IsActiveTree()), |
| 1073 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), | 1067 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), |
| 1074 can_render_to_separate_surface, | 1068 can_render_to_separate_surface, |
| 1075 settings().layer_transforms_should_scale_layer_contents, | 1069 settings().layer_transforms_should_scale_layer_contents, |
| 1076 settings().verify_clip_tree_calculations, | 1070 settings().use_layer_lists, &render_surface_layer_list_, |
| 1077 verify_visible_rect_calculations, &render_surface_layer_list_, | |
| 1078 &property_trees_); | 1071 &property_trees_); |
| 1079 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 1072 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
| 1080 if (const char* client_name = GetClientNameForMetrics()) { | 1073 if (const char* client_name = GetClientNameForMetrics()) { |
| 1081 UMA_HISTOGRAM_COUNTS( | 1074 UMA_HISTOGRAM_COUNTS( |
| 1082 base::StringPrintf( | 1075 base::StringPrintf( |
| 1083 "Compositing.%s.LayerTreeImpl.CalculateDrawPropertiesUs", | 1076 "Compositing.%s.LayerTreeImpl.CalculateDrawPropertiesUs", |
| 1084 client_name), | 1077 client_name), |
| 1085 timer.Elapsed().InMicroseconds()); | 1078 timer.Elapsed().InMicroseconds()); |
| 1086 UMA_HISTOGRAM_COUNTS_100( | 1079 UMA_HISTOGRAM_COUNTS_100( |
| 1087 base::StringPrintf("Compositing.%s.NumRenderSurfaces", client_name), | 1080 base::StringPrintf("Compositing.%s.NumRenderSurfaces", client_name), |
| (...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2165 | 2158 |
| 2166 void LayerTreeImpl::ResetAllChangeTracking() { | 2159 void LayerTreeImpl::ResetAllChangeTracking() { |
| 2167 layers_that_should_push_properties_.clear(); | 2160 layers_that_should_push_properties_.clear(); |
| 2168 // Iterate over all layers, including masks. | 2161 // Iterate over all layers, including masks. |
| 2169 for (auto& layer : *layers_) | 2162 for (auto& layer : *layers_) |
| 2170 layer->ResetChangeTracking(); | 2163 layer->ResetChangeTracking(); |
| 2171 property_trees_.ResetAllChangeTracking(); | 2164 property_trees_.ResetAllChangeTracking(); |
| 2172 } | 2165 } |
| 2173 | 2166 |
| 2174 } // namespace cc | 2167 } // namespace cc |
| OLD | NEW |