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 902 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
913 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); | 913 layer->SetElementId(LayerIdToElementIdForTesting(layer->id())); |
914 } | 914 } |
915 | 915 |
916 void LayerTreeImpl::SetElementIdsForTesting() { | 916 void LayerTreeImpl::SetElementIdsForTesting() { |
917 LayerListIterator<LayerImpl> it(root_layer_for_testing_); | 917 LayerListIterator<LayerImpl> it(root_layer_for_testing_); |
918 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) { | 918 for (; it != LayerListIterator<LayerImpl>(nullptr); ++it) { |
919 SetElementIdForTesting(*it); | 919 SetElementIdForTesting(*it); |
920 } | 920 } |
921 } | 921 } |
922 | 922 |
923 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { | 923 bool LayerTreeImpl::UpdateDrawProperties( |
| 924 bool update_lcd_text, |
| 925 bool force_skip_verify_visible_rect_calculations) { |
924 if (!needs_update_draw_properties_) | 926 if (!needs_update_draw_properties_) |
925 return true; | 927 return true; |
926 | 928 |
927 // Calling UpdateDrawProperties must clear this flag, so there can be no | 929 // Calling UpdateDrawProperties must clear this flag, so there can be no |
928 // early outs before this. | 930 // early outs before this. |
929 needs_update_draw_properties_ = false; | 931 needs_update_draw_properties_ = false; |
930 | 932 |
931 // For max_texture_size. When a new output surface is received the needs | 933 // For max_texture_size. When a new output surface is received the needs |
932 // update draw properties flag is set again. | 934 // update draw properties flag is set again. |
933 if (!layer_tree_host_impl_->compositor_frame_sink()) | 935 if (!layer_tree_host_impl_->compositor_frame_sink()) |
934 return false; | 936 return false; |
935 | 937 |
936 // Clear this after the renderer early out, as it should still be | 938 // Clear this after the renderer early out, as it should still be |
937 // possible to hit test even without a renderer. | 939 // possible to hit test even without a renderer. |
938 render_surface_layer_list_.clear(); | 940 render_surface_layer_list_.clear(); |
939 | 941 |
940 if (layer_list_.empty()) | 942 if (layer_list_.empty()) |
941 return false; | 943 return false; |
942 | 944 |
943 { | 945 { |
944 base::ElapsedTimer timer; | 946 base::ElapsedTimer timer; |
945 TRACE_EVENT2( | 947 TRACE_EVENT2( |
946 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", | 948 "cc", "LayerTreeImpl::UpdateDrawProperties::CalculateDrawProperties", |
947 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); | 949 "IsActive", IsActiveTree(), "SourceFrameNumber", source_frame_number_); |
948 bool can_render_to_separate_surface = | 950 bool can_render_to_separate_surface = |
949 (!is_in_resourceless_software_draw_mode()); | 951 (!is_in_resourceless_software_draw_mode()); |
950 | 952 |
| 953 bool verify_visible_rect_calculations = |
| 954 force_skip_verify_visible_rect_calculations |
| 955 ? false |
| 956 : settings().verify_visible_rect_calculations; |
951 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 957 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
952 layer_list_[0], DrawViewportSize(), | 958 layer_list_[0], DrawViewportSize(), |
953 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), | 959 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), |
954 current_page_scale_factor(), PageScaleLayer(), | 960 current_page_scale_factor(), PageScaleLayer(), |
955 InnerViewportScrollLayer(), OuterViewportScrollLayer(), | 961 InnerViewportScrollLayer(), OuterViewportScrollLayer(), |
956 elastic_overscroll()->Current(IsActiveTree()), | 962 elastic_overscroll()->Current(IsActiveTree()), |
957 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), | 963 OverscrollElasticityLayer(), resource_provider()->max_texture_size(), |
958 can_render_to_separate_surface, | 964 can_render_to_separate_surface, |
959 settings().layer_transforms_should_scale_layer_contents, | 965 settings().layer_transforms_should_scale_layer_contents, |
960 settings().verify_clip_tree_calculations, | 966 settings().verify_clip_tree_calculations, |
| 967 verify_visible_rect_calculations, |
961 settings().verify_transform_tree_calculations, | 968 settings().verify_transform_tree_calculations, |
962 &render_surface_layer_list_, &property_trees_); | 969 &render_surface_layer_list_, &property_trees_); |
963 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 970 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
964 if (const char* client_name = GetClientNameForMetrics()) { | 971 if (const char* client_name = GetClientNameForMetrics()) { |
965 UMA_HISTOGRAM_COUNTS( | 972 UMA_HISTOGRAM_COUNTS( |
966 base::StringPrintf( | 973 base::StringPrintf( |
967 "Compositing.%s.LayerTreeImpl.CalculateDrawPropertiesUs", | 974 "Compositing.%s.LayerTreeImpl.CalculateDrawPropertiesUs", |
968 client_name), | 975 client_name), |
969 timer.Elapsed().InMicroseconds()); | 976 timer.Elapsed().InMicroseconds()); |
970 UMA_HISTOGRAM_COUNTS_100( | 977 UMA_HISTOGRAM_COUNTS_100( |
(...skipping 1101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2072 | 2079 |
2073 void LayerTreeImpl::ResetAllChangeTracking() { | 2080 void LayerTreeImpl::ResetAllChangeTracking() { |
2074 layers_that_should_push_properties_.clear(); | 2081 layers_that_should_push_properties_.clear(); |
2075 // Iterate over all layers, including masks and replicas. | 2082 // Iterate over all layers, including masks and replicas. |
2076 for (auto& layer : *layers_) | 2083 for (auto& layer : *layers_) |
2077 layer->ResetChangeTracking(); | 2084 layer->ResetChangeTracking(); |
2078 property_trees_.ResetAllChangeTracking(); | 2085 property_trees_.ResetAllChangeTracking(); |
2079 } | 2086 } |
2080 | 2087 |
2081 } // namespace cc | 2088 } // namespace cc |
OLD | NEW |