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_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <stack> | 8 #include <stack> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 min_page_scale_factor_(1.f), | 126 min_page_scale_factor_(1.f), |
127 max_page_scale_factor_(1.f), | 127 max_page_scale_factor_(1.f), |
128 has_gpu_rasterization_trigger_(false), | 128 has_gpu_rasterization_trigger_(false), |
129 content_is_suitable_for_gpu_rasterization_(true), | 129 content_is_suitable_for_gpu_rasterization_(true), |
130 gpu_rasterization_histogram_recorded_(false), | 130 gpu_rasterization_histogram_recorded_(false), |
131 background_color_(SK_ColorWHITE), | 131 background_color_(SK_ColorWHITE), |
132 has_transparent_background_(false), | 132 has_transparent_background_(false), |
133 partial_texture_update_requests_(0), | 133 partial_texture_update_requests_(0), |
134 did_complete_scale_animation_(false), | 134 did_complete_scale_animation_(false), |
135 in_paint_layer_contents_(false), | 135 in_paint_layer_contents_(false), |
136 total_frames_used_for_lcd_text_metrics_(0), | |
137 id_(s_layer_tree_host_sequence_number.GetNext() + 1), | 136 id_(s_layer_tree_host_sequence_number.GetNext() + 1), |
138 next_commit_forces_redraw_(false), | 137 next_commit_forces_redraw_(false), |
139 shared_bitmap_manager_(shared_bitmap_manager), | 138 shared_bitmap_manager_(shared_bitmap_manager), |
140 gpu_memory_buffer_manager_(gpu_memory_buffer_manager), | 139 gpu_memory_buffer_manager_(gpu_memory_buffer_manager), |
141 surface_id_namespace_(0u), | 140 surface_id_namespace_(0u), |
142 next_surface_sequence_(1u) { | 141 next_surface_sequence_(1u) { |
143 if (settings_.accelerated_animation_enabled) | 142 if (settings_.accelerated_animation_enabled) |
144 animation_registrar_ = AnimationRegistrar::Create(); | 143 animation_registrar_ = AnimationRegistrar::Create(); |
145 rendering_stats_instrumentation_->set_record_rendering_stats( | 144 rendering_stats_instrumentation_->set_record_rendering_stats( |
146 debug_state_.RecordRenderingStats()); | 145 debug_state_.RecordRenderingStats()); |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 content_is_suitable_for_gpu_rasterization_); | 805 content_is_suitable_for_gpu_rasterization_); |
807 // Record how many pages actually get gpu rasterization when enabled. | 806 // Record how many pages actually get gpu rasterization when enabled. |
808 UMA_HISTOGRAM_BOOLEAN("Renderer4.GpuRasterizationUsed", | 807 UMA_HISTOGRAM_BOOLEAN("Renderer4.GpuRasterizationUsed", |
809 (has_gpu_rasterization_trigger_ && | 808 (has_gpu_rasterization_trigger_ && |
810 content_is_suitable_for_gpu_rasterization_)); | 809 content_is_suitable_for_gpu_rasterization_)); |
811 } | 810 } |
812 | 811 |
813 gpu_rasterization_histogram_recorded_ = true; | 812 gpu_rasterization_histogram_recorded_ = true; |
814 } | 813 } |
815 | 814 |
816 void LayerTreeHost::CalculateLCDTextMetricsCallback(Layer* layer) { | |
817 if (!layer->SupportsLCDText()) | |
818 return; | |
819 | |
820 lcd_text_metrics_.total_num_cc_layers++; | |
821 if (layer->draw_properties().can_use_lcd_text) { | |
822 lcd_text_metrics_.total_num_cc_layers_can_use_lcd_text++; | |
823 if (layer->contents_opaque()) | |
824 lcd_text_metrics_.total_num_cc_layers_will_use_lcd_text++; | |
825 } | |
826 } | |
827 | |
828 bool LayerTreeHost::UsingSharedMemoryResources() { | 815 bool LayerTreeHost::UsingSharedMemoryResources() { |
829 return GetRendererCapabilities().using_shared_memory_resources; | 816 return GetRendererCapabilities().using_shared_memory_resources; |
830 } | 817 } |
831 | 818 |
832 bool LayerTreeHost::UpdateLayers(Layer* root_layer, | 819 bool LayerTreeHost::UpdateLayers(Layer* root_layer, |
833 ResourceUpdateQueue* queue) { | 820 ResourceUpdateQueue* queue) { |
834 TRACE_EVENT1("cc", "LayerTreeHost::UpdateLayers", | 821 TRACE_EVENT1("cc", "LayerTreeHost::UpdateLayers", |
835 "source_frame_number", source_frame_number()); | 822 "source_frame_number", source_frame_number()); |
836 | 823 |
837 RenderSurfaceLayerList update_list; | 824 RenderSurfaceLayerList update_list; |
(...skipping 20 matching lines...) Expand all Loading... |
858 root_layer, device_viewport_size(), gfx::Transform(), | 845 root_layer, device_viewport_size(), gfx::Transform(), |
859 device_scale_factor_, page_scale_factor_, page_scale_layer, | 846 device_scale_factor_, page_scale_factor_, page_scale_layer, |
860 elastic_overscroll_, overscroll_elasticity_layer_.get(), | 847 elastic_overscroll_, overscroll_elasticity_layer_.get(), |
861 GetRendererCapabilities().max_texture_size, settings_.can_use_lcd_text, | 848 GetRendererCapabilities().max_texture_size, settings_.can_use_lcd_text, |
862 settings_.layers_always_allowed_lcd_text, | 849 settings_.layers_always_allowed_lcd_text, |
863 can_render_to_separate_surface, | 850 can_render_to_separate_surface, |
864 settings_.layer_transforms_should_scale_layer_contents, | 851 settings_.layer_transforms_should_scale_layer_contents, |
865 settings_.verify_property_trees, &update_list, | 852 settings_.verify_property_trees, &update_list, |
866 render_surface_layer_list_id); | 853 render_surface_layer_list_id); |
867 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 854 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
868 | |
869 if (total_frames_used_for_lcd_text_metrics_ <= | |
870 kTotalFramesToUseForLCDTextMetrics) { | |
871 LayerTreeHostCommon::CallFunctionForSubtree( | |
872 root_layer, | |
873 base::Bind(&LayerTreeHost::CalculateLCDTextMetricsCallback, | |
874 base::Unretained(this))); | |
875 total_frames_used_for_lcd_text_metrics_++; | |
876 } | |
877 | |
878 if (total_frames_used_for_lcd_text_metrics_ == | |
879 kTotalFramesToUseForLCDTextMetrics) { | |
880 total_frames_used_for_lcd_text_metrics_++; | |
881 | |
882 UMA_HISTOGRAM_PERCENTAGE( | |
883 "Renderer4.LCDText.PercentageOfCandidateLayers", | |
884 lcd_text_metrics_.total_num_cc_layers_can_use_lcd_text * 100.0 / | |
885 lcd_text_metrics_.total_num_cc_layers); | |
886 UMA_HISTOGRAM_PERCENTAGE( | |
887 "Renderer4.LCDText.PercentageOfAALayers", | |
888 lcd_text_metrics_.total_num_cc_layers_will_use_lcd_text * 100.0 / | |
889 lcd_text_metrics_.total_num_cc_layers_can_use_lcd_text); | |
890 } | |
891 } | 855 } |
892 | 856 |
893 // Reset partial texture update requests. | 857 // Reset partial texture update requests. |
894 partial_texture_update_requests_ = 0; | 858 partial_texture_update_requests_ = 0; |
895 | 859 |
896 bool did_paint_content = false; | 860 bool did_paint_content = false; |
897 bool need_more_updates = false; | 861 bool need_more_updates = false; |
898 PaintLayerContents( | 862 PaintLayerContents( |
899 update_list, queue, &did_paint_content, &need_more_updates); | 863 update_list, queue, &did_paint_content, &need_more_updates); |
900 if (need_more_updates) { | 864 if (need_more_updates) { |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1374 bool children_need_begin_frames) const { | 1338 bool children_need_begin_frames) const { |
1375 proxy_->SetChildrenNeedBeginFrames(children_need_begin_frames); | 1339 proxy_->SetChildrenNeedBeginFrames(children_need_begin_frames); |
1376 } | 1340 } |
1377 | 1341 |
1378 void LayerTreeHost::SendBeginFramesToChildren( | 1342 void LayerTreeHost::SendBeginFramesToChildren( |
1379 const BeginFrameArgs& args) const { | 1343 const BeginFrameArgs& args) const { |
1380 client_->SendBeginFramesToChildren(args); | 1344 client_->SendBeginFramesToChildren(args); |
1381 } | 1345 } |
1382 | 1346 |
1383 } // namespace cc | 1347 } // namespace cc |
OLD | NEW |