Chromium Code Reviews| 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_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 107 return GL_TEXTURE_2D; | 107 return GL_TEXTURE_2D; |
| 108 | 108 |
| 109 if (context_provider->ContextCapabilities().gpu.egl_image_external) | 109 if (context_provider->ContextCapabilities().gpu.egl_image_external) |
| 110 return GL_TEXTURE_EXTERNAL_OES; | 110 return GL_TEXTURE_EXTERNAL_OES; |
| 111 if (context_provider->ContextCapabilities().gpu.texture_rectangle) | 111 if (context_provider->ContextCapabilities().gpu.texture_rectangle) |
| 112 return GL_TEXTURE_RECTANGLE_ARB; | 112 return GL_TEXTURE_RECTANGLE_ARB; |
| 113 | 113 |
| 114 return GL_TEXTURE_2D; | 114 return GL_TEXTURE_2D; |
| 115 } | 115 } |
| 116 | 116 |
| 117 void LayerCounter(size_t* counter, cc::LayerImpl* /* layer */) { | |
|
danakj
2014/07/10 18:03:41
we don't comment out parameter names in chrome
| |
| 118 (*counter)++; | |
| 119 } | |
| 120 | |
| 117 } // namespace | 121 } // namespace |
| 118 | 122 |
| 119 namespace cc { | 123 namespace cc { |
| 120 | 124 |
| 121 class LayerTreeHostImplTimeSourceAdapter : public TimeSourceClient { | 125 class LayerTreeHostImplTimeSourceAdapter : public TimeSourceClient { |
| 122 public: | 126 public: |
| 123 static scoped_ptr<LayerTreeHostImplTimeSourceAdapter> Create( | 127 static scoped_ptr<LayerTreeHostImplTimeSourceAdapter> Create( |
| 124 LayerTreeHostImpl* layer_tree_host_impl, | 128 LayerTreeHostImpl* layer_tree_host_impl, |
| 125 scoped_refptr<DelayBasedTimeSource> time_source) { | 129 scoped_refptr<DelayBasedTimeSource> time_source) { |
| 126 return make_scoped_ptr( | 130 return make_scoped_ptr( |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 248 begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()), | 252 begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()), |
| 249 animation_registrar_(AnimationRegistrar::Create()), | 253 animation_registrar_(AnimationRegistrar::Create()), |
| 250 rendering_stats_instrumentation_(rendering_stats_instrumentation), | 254 rendering_stats_instrumentation_(rendering_stats_instrumentation), |
| 251 micro_benchmark_controller_(this), | 255 micro_benchmark_controller_(this), |
| 252 need_to_update_visible_tiles_before_draw_(false), | 256 need_to_update_visible_tiles_before_draw_(false), |
| 253 #if DCHECK_IS_ON | 257 #if DCHECK_IS_ON |
| 254 did_lose_called_(false), | 258 did_lose_called_(false), |
| 255 #endif | 259 #endif |
| 256 shared_bitmap_manager_(manager), | 260 shared_bitmap_manager_(manager), |
| 257 id_(id), | 261 id_(id), |
| 258 transfer_buffer_memory_limit_(0u) { | 262 transfer_buffer_memory_limit_(0u), |
| 263 num_layers_(0u) { | |
| 259 DCHECK(proxy_->IsImplThread()); | 264 DCHECK(proxy_->IsImplThread()); |
| 260 DidVisibilityChange(this, visible_); | 265 DidVisibilityChange(this, visible_); |
| 261 animation_registrar_->set_supports_scroll_animations( | 266 animation_registrar_->set_supports_scroll_animations( |
| 262 proxy_->SupportsImplScrolling()); | 267 proxy_->SupportsImplScrolling()); |
| 263 | 268 |
| 264 SetDebugState(settings.initial_debug_state); | 269 SetDebugState(settings.initial_debug_state); |
| 265 | 270 |
| 266 if (settings.calculate_top_controls_position) { | 271 if (settings.calculate_top_controls_position) { |
| 267 top_controls_manager_ = | 272 top_controls_manager_ = |
| 268 TopControlsManager::Create(this, | 273 TopControlsManager::Create(this, |
| (...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1092 "LayerTreeHostImpl::PrepareToDraw", | 1097 "LayerTreeHostImpl::PrepareToDraw", |
| 1093 "SourceFrameNumber", | 1098 "SourceFrameNumber", |
| 1094 active_tree_->source_frame_number()); | 1099 active_tree_->source_frame_number()); |
| 1095 | 1100 |
| 1096 if (need_to_update_visible_tiles_before_draw_ && | 1101 if (need_to_update_visible_tiles_before_draw_ && |
| 1097 tile_manager_ && tile_manager_->UpdateVisibleTiles()) { | 1102 tile_manager_ && tile_manager_->UpdateVisibleTiles()) { |
| 1098 DidInitializeVisibleTile(); | 1103 DidInitializeVisibleTile(); |
| 1099 } | 1104 } |
| 1100 need_to_update_visible_tiles_before_draw_ = true; | 1105 need_to_update_visible_tiles_before_draw_ = true; |
| 1101 | 1106 |
| 1107 { | |
| 1108 // Count the number of layers. See http://crbug.com/253919 | |
| 1109 // A large number of layers might slow down rendering. | |
| 1110 num_layers_ = 0; | |
|
danakj
2014/07/10 18:03:41
While I love tests, I don't think we need to add a
Ian Vollick
2014/07/10 18:09:50
Ah, cool! That's a great idea. If we can use that
dneto
2014/07/10 18:44:16
Yes, that's smart! I don't know the data structur
| |
| 1111 LayerTreeHostCommon::CallFunctionForSubtree<LayerImpl>( | |
| 1112 active_tree_->root_layer(), base::Bind(LayerCounter, &num_layers_)); | |
|
Ian Vollick
2014/07/10 03:16:23
I'm a bit worried about doing an extra tree walk e
dneto
2014/07/10 18:44:16
I'll rework it one way or another.
| |
| 1113 UMA_HISTOGRAM_CUSTOM_COUNTS( | |
| 1114 "Compositing.NumLayers", num_layers_, 1, 1000, 50); | |
|
dneto
2014/07/10 01:29:03
Also not sure if range of 1000 and width-20 bucket
Ian Vollick
2014/07/10 03:16:22
This is probably ok. width-10 buckets might be nic
dneto
2014/07/10 18:44:16
Ok. I'll make width-10 buckets with a range up t
| |
| 1115 } | |
| 1116 | |
| 1102 bool ok = active_tree_->UpdateDrawProperties(); | 1117 bool ok = active_tree_->UpdateDrawProperties(); |
| 1103 DCHECK(ok) << "UpdateDrawProperties failed during draw"; | 1118 DCHECK(ok) << "UpdateDrawProperties failed during draw"; |
| 1104 | 1119 |
| 1105 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); | 1120 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); |
| 1106 frame->render_passes.clear(); | 1121 frame->render_passes.clear(); |
| 1107 frame->render_passes_by_id.clear(); | 1122 frame->render_passes_by_id.clear(); |
| 1108 frame->will_draw_layers.clear(); | 1123 frame->will_draw_layers.clear(); |
| 1109 frame->contains_incomplete_tile = false; | 1124 frame->contains_incomplete_tile = false; |
| 1110 frame->has_no_damage = false; | 1125 frame->has_no_damage = false; |
| 1111 | 1126 |
| (...skipping 2070 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3182 } | 3197 } |
| 3183 | 3198 |
| 3184 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { | 3199 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { |
| 3185 std::vector<PictureLayerImpl*>::iterator it = | 3200 std::vector<PictureLayerImpl*>::iterator it = |
| 3186 std::find(picture_layers_.begin(), picture_layers_.end(), layer); | 3201 std::find(picture_layers_.begin(), picture_layers_.end(), layer); |
| 3187 DCHECK(it != picture_layers_.end()); | 3202 DCHECK(it != picture_layers_.end()); |
| 3188 picture_layers_.erase(it); | 3203 picture_layers_.erase(it); |
| 3189 } | 3204 } |
| 3190 | 3205 |
| 3191 } // namespace cc | 3206 } // namespace cc |
| OLD | NEW |