Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(718)

Side by Side Diff: cc/trees/layer_tree_impl.cc

Issue 2334003003: cc : Compute visible rects dynamically (1) (Closed)
Patch Set: comment Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698