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