Chromium Code Reviews| Index: cc/trees/layer_tree_host.cc |
| diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc |
| index 903236ec060f00df4cf06b52e4188581bda9c359..c68e9f525224e135f45fb0191ea672f5d028652d 100644 |
| --- a/cc/trees/layer_tree_host.cc |
| +++ b/cc/trees/layer_tree_host.cc |
| @@ -775,6 +775,7 @@ void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { |
| // This flag is sticky until a new tree comes along. |
| content_is_suitable_for_gpu_rasterization_ = true; |
| gpu_rasterization_histogram_recorded_ = false; |
| + num_times_gpu_rasterization_reenabled_ = 0; |
| SetNeedsFullTreeSync(); |
| } |
| @@ -1050,11 +1051,23 @@ bool LayerTreeHost::DoUpdateLayers(Layer* root_layer) { |
| base::AutoReset<bool> painting(&in_paint_layer_contents_, true); |
| bool did_paint_content = false; |
| + bool old_content_is_suitable_for_gpu_rasterization = |
| + content_is_suitable_for_gpu_rasterization_; |
| + // Every |kFramePeriodToReeanbleGpuRasterization|, try to re-enable GPU |
| + // raserization. Only do this if we haven't re-enabled it too many times. |
| + 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
|
| + num_times_gpu_rasterization_reenabled_ < |
| + kMaxTimesToEnableGpuRasterization) { |
| + 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
|
| + } |
| for (const auto& layer : update_layer_list) { |
| did_paint_content |= layer->Update(); |
| content_is_suitable_for_gpu_rasterization_ &= |
| layer->IsSuitableForGpuRasterization(); |
| } |
| + num_times_gpu_rasterization_reenabled_ += |
| + !old_content_is_suitable_for_gpu_rasterization && |
| + content_is_suitable_for_gpu_rasterization_; |
| return did_paint_content; |
| } |