diff options
author | caseq@chromium.org <caseq@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-23 13:28:22 +0000 |
---|---|---|
committer | caseq@chromium.org <caseq@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-23 13:28:22 +0000 |
commit | 6e89eb7aa21c001b0d1d77abea5dd7fe8743920d (patch) | |
tree | 4fe682eb86dab0e0356ca7356ef569eaa35333a2 /cc | |
parent | 707e480c59b4332dfc0b41a50ffcefecd1767344 (diff) | |
download | chromium_src-6e89eb7aa21c001b0d1d77abea5dd7fe8743920d.zip chromium_src-6e89eb7aa21c001b0d1d77abea5dd7fe8743920d.tar.gz chromium_src-6e89eb7aa21c001b0d1d77abea5dd7fe8743920d.tar.bz2 |
Add LayerTreeHostClient::{will,did}UpdateLayer, report layer updates to DevTools
This adds instrumentation methods that mark layer updates. Note that we don't use
trace event based instrumentation, as we only want to receive events related to the
inspected page.
Related blink change: https://codereview.chromium.org/16878004
BUG=244505
R=jamesr@chromium.org, nduca@chromium.org
Review URL: https://codereview.chromium.org/16848010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213090 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r-- | cc/debug/devtools_instrumentation.h | 25 | ||||
-rw-r--r-- | cc/trees/layer_tree_host.cc | 17 | ||||
-rw-r--r-- | cc/trees/layer_tree_host.h | 2 |
3 files changed, 41 insertions, 3 deletions
diff --git a/cc/debug/devtools_instrumentation.h b/cc/debug/devtools_instrumentation.h index 7b2ea1a..7a77d40 100644 --- a/cc/debug/devtools_instrumentation.h +++ b/cc/debug/devtools_instrumentation.h @@ -13,16 +13,18 @@ namespace devtools_instrumentation { namespace internal { const char kCategory[] = "cc,devtools"; const char kLayerId[] = "layerId"; +const char kLayerTreeId[] = "layerTreeId"; } const char kPaintLayer[] = "PaintLayer"; const char kRasterTask[] = "RasterTask"; const char kImageDecodeTask[] = "ImageDecodeTask"; const char kPaintSetup[] = "PaintSetup"; +const char kUpdateLayer[] = "UpdateLayer"; class ScopedLayerTask { public: - explicit ScopedLayerTask(const char* event_name, int layer_id) + ScopedLayerTask(const char* event_name, int layer_id) : event_name_(event_name) { TRACE_EVENT_BEGIN1(internal::kCategory, event_name_, internal::kLayerId, layer_id); @@ -32,6 +34,26 @@ class ScopedLayerTask { } private: const char* event_name_; + + DISALLOW_COPY_AND_ASSIGN(ScopedLayerTask); +}; + +class ScopedLayerTreeTask { + public: + ScopedLayerTreeTask(const char* event_name, + int layer_id, + uint64 tree_id) + : event_name_(event_name) { + TRACE_EVENT_BEGIN2(internal::kCategory, event_name_, + internal::kLayerId, layer_id, internal::kLayerTreeId, tree_id); + } + ~ScopedLayerTreeTask() { + TRACE_EVENT_END0(internal::kCategory, event_name_); + } + private: + const char* event_name_; + + DISALLOW_COPY_AND_ASSIGN(ScopedLayerTreeTask); }; struct ScopedLayerObjectTracker @@ -43,6 +65,7 @@ struct ScopedLayerObjectTracker layer_id) { } + private: DISALLOW_COPY_AND_ASSIGN(ScopedLayerObjectTracker); }; diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc index 12d81f3..0d90c59 100644 --- a/cc/trees/layer_tree_host.cc +++ b/cc/trees/layer_tree_host.cc @@ -18,6 +18,7 @@ #include "cc/animation/layer_animation_controller.h" #include "cc/base/math_util.h" #include "cc/debug/benchmark_instrumentation.h" +#include "cc/debug/devtools_instrumentation.h" #include "cc/debug/overdraw_metrics.h" #include "cc/debug/rendering_stats_instrumentation.h" #include "cc/input/top_controls_manager.h" @@ -73,6 +74,8 @@ scoped_ptr<LayerTreeHost> LayerTreeHost::Create( return layer_tree_host.Pass(); } +static int s_next_tree_id = 1; + LayerTreeHost::LayerTreeHost(LayerTreeHostClient* client, const LayerTreeSettings& settings) : animating_(false), @@ -97,11 +100,11 @@ LayerTreeHost::LayerTreeHost(LayerTreeHostClient* client, has_transparent_background_(false), partial_texture_update_requests_(0), in_paint_layer_contents_(false), - total_frames_used_for_lcd_text_metrics_(0) { + total_frames_used_for_lcd_text_metrics_(0), + tree_id_(s_next_tree_id++) { if (settings_.accelerated_animation_enabled) animation_registrar_ = AnimationRegistrar::Create(); s_num_layer_tree_instances++; - rendering_stats_instrumentation_->set_record_rendering_stats( debug_state_.RecordRenderingStats()); } @@ -883,6 +886,10 @@ void LayerTreeHost::PaintMasksForRenderSurface(Layer* render_surface_layer, Layer* mask_layer = render_surface_layer->mask_layer(); if (mask_layer) { + devtools_instrumentation::ScopedLayerTreeTask + update_layer(devtools_instrumentation::kUpdateLayer, + mask_layer->id(), + id()); *did_paint_content |= mask_layer->Update(queue, NULL); *need_more_updates |= mask_layer->NeedMoreUpdates(); } @@ -891,6 +898,10 @@ void LayerTreeHost::PaintMasksForRenderSurface(Layer* render_surface_layer, render_surface_layer->replica_layer() ? render_surface_layer->replica_layer()->mask_layer() : NULL; if (replica_mask_layer) { + devtools_instrumentation::ScopedLayerTreeTask + update_layer(devtools_instrumentation::kUpdateLayer, + replica_mask_layer->id(), + id()); *did_paint_content |= replica_mask_layer->Update(queue, NULL); *need_more_updates |= replica_mask_layer->NeedMoreUpdates(); } @@ -934,6 +945,8 @@ void LayerTreeHost::PaintLayerContents( PaintMasksForRenderSurface( *it, queue, did_paint_content, need_more_updates); } else if (it.represents_itself()) { + devtools_instrumentation::ScopedLayerTreeTask + update_layer(devtools_instrumentation::kUpdateLayer, it->id(), id()); DCHECK(!it->paint_properties().bounds.IsEmpty()); *did_paint_content |= it->Update(queue, &occlusion_tracker); *need_more_updates |= it->NeedMoreUpdates(); diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h index 63e8aec..0fd3abb 100644 --- a/cc/trees/layer_tree_host.h +++ b/cc/trees/layer_tree_host.h @@ -253,6 +253,7 @@ class CC_EXPORT LayerTreeHost : NON_EXPORTED_BASE(public RateLimiterClient) { bool in_paint_layer_contents() const { return in_paint_layer_contents_; } bool UsingSharedMemoryResources(); + int id() const { return tree_id_; } protected: LayerTreeHost(LayerTreeHostClient* client, const LayerTreeSettings& settings); @@ -367,6 +368,7 @@ class CC_EXPORT LayerTreeHost : NON_EXPORTED_BASE(public RateLimiterClient) { int64 total_num_cc_layers_will_use_lcd_text; }; LCDTextMetrics lcd_text_metrics_; + int tree_id_; DISALLOW_COPY_AND_ASSIGN(LayerTreeHost); }; |