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

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

Issue 2108033004: cc: Re-enable GPU rasterization after content veto. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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_host.h" 5 #include "cc/trees/layer_tree_host.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 757 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 root_layer_->SetLayerTreeHost(this); 768 root_layer_->SetLayerTreeHost(this);
769 } 769 }
770 770
771 if (hud_layer_.get()) 771 if (hud_layer_.get())
772 hud_layer_->RemoveFromParent(); 772 hud_layer_->RemoveFromParent();
773 773
774 // Reset gpu rasterization flag. 774 // Reset gpu rasterization flag.
775 // This flag is sticky until a new tree comes along. 775 // This flag is sticky until a new tree comes along.
776 content_is_suitable_for_gpu_rasterization_ = true; 776 content_is_suitable_for_gpu_rasterization_ = true;
777 gpu_rasterization_histogram_recorded_ = false; 777 gpu_rasterization_histogram_recorded_ = false;
778 num_times_gpu_rasterization_reenabled_ = 0;
778 779
779 SetNeedsFullTreeSync(); 780 SetNeedsFullTreeSync();
780 } 781 }
781 782
782 void LayerTreeHost::SetDebugState(const LayerTreeDebugState& debug_state) { 783 void LayerTreeHost::SetDebugState(const LayerTreeDebugState& debug_state) {
783 LayerTreeDebugState new_debug_state = 784 LayerTreeDebugState new_debug_state =
784 LayerTreeDebugState::Unite(settings_.initial_debug_state, debug_state); 785 LayerTreeDebugState::Unite(settings_.initial_debug_state, debug_state);
785 786
786 if (LayerTreeDebugState::Equal(debug_state_, new_debug_state)) 787 if (LayerTreeDebugState::Equal(debug_state_, new_debug_state))
787 return; 788 return;
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 draw_property_utils::FindLayersThatNeedUpdates( 1044 draw_property_utils::FindLayersThatNeedUpdates(
1044 this, property_trees_.transform_tree, property_trees_.effect_tree, 1045 this, property_trees_.transform_tree, property_trees_.effect_tree,
1045 &update_layer_list); 1046 &update_layer_list);
1046 } 1047 }
1047 1048
1048 for (const auto& layer : update_layer_list) 1049 for (const auto& layer : update_layer_list)
1049 layer->SavePaintProperties(); 1050 layer->SavePaintProperties();
1050 1051
1051 base::AutoReset<bool> painting(&in_paint_layer_contents_, true); 1052 base::AutoReset<bool> painting(&in_paint_layer_contents_, true);
1052 bool did_paint_content = false; 1053 bool did_paint_content = false;
1054 bool old_content_is_suitable_for_gpu_rasterization =
1055 content_is_suitable_for_gpu_rasterization_;
1056 // Every |kFramePeriodToReeanbleGpuRasterization|, try to re-enable GPU
1057 // raserization. Only do this if we haven't re-enabled it too many times.
1058 if ((source_frame_number_ % kFramePeriodToReeanbleGpuRasterization) == 0 &&
enne (OOO) 2016/06/30 01:02:24 I think it might be safer to say "if the last N fr
1059 num_times_gpu_rasterization_reenabled_ <
1060 kMaxTimesToEnableGpuRasterization) {
1061 content_is_suitable_for_gpu_rasterization_ = true;
ericrk 2016/06/30 18:46:00 Can we always set this to true? Or do we want to c
1062 }
1053 for (const auto& layer : update_layer_list) { 1063 for (const auto& layer : update_layer_list) {
1054 did_paint_content |= layer->Update(); 1064 did_paint_content |= layer->Update();
1055 content_is_suitable_for_gpu_rasterization_ &= 1065 content_is_suitable_for_gpu_rasterization_ &=
1056 layer->IsSuitableForGpuRasterization(); 1066 layer->IsSuitableForGpuRasterization();
1057 } 1067 }
1068 num_times_gpu_rasterization_reenabled_ +=
1069 !old_content_is_suitable_for_gpu_rasterization &&
1070 content_is_suitable_for_gpu_rasterization_;
1058 return did_paint_content; 1071 return did_paint_content;
1059 } 1072 }
1060 1073
1061 void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) { 1074 void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) {
1062 for (auto& swap_promise : info->swap_promises) { 1075 for (auto& swap_promise : info->swap_promises) {
1063 TRACE_EVENT_WITH_FLOW1("input,benchmark", 1076 TRACE_EVENT_WITH_FLOW1("input,benchmark",
1064 "LatencyInfo.Flow", 1077 "LatencyInfo.Flow",
1065 TRACE_ID_DONT_MANGLE(swap_promise->TraceId()), 1078 TRACE_ID_DONT_MANGLE(swap_promise->TraceId()),
1066 TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, 1079 TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT,
1067 "step", "Main thread scroll update"); 1080 "step", "Main thread scroll update");
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after
1762 int seq_num = property_trees_.sequence_number; 1775 int seq_num = property_trees_.sequence_number;
1763 LayerTreeHostCommon::CallFunctionForEveryLayer(this, [seq_num](Layer* layer) { 1776 LayerTreeHostCommon::CallFunctionForEveryLayer(this, [seq_num](Layer* layer) {
1764 layer->set_property_tree_sequence_number(seq_num); 1777 layer->set_property_tree_sequence_number(seq_num);
1765 }); 1778 });
1766 1779
1767 surface_id_namespace_ = proto.surface_id_namespace(); 1780 surface_id_namespace_ = proto.surface_id_namespace();
1768 next_surface_sequence_ = proto.next_surface_sequence(); 1781 next_surface_sequence_ = proto.next_surface_sequence();
1769 } 1782 }
1770 1783
1771 } // namespace cc 1784 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698