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

Unified Diff: cc/layer_tree_host_impl.cc

Issue 12519006: cc:: Add RenderingStatsInstrumentation to manage collection of RenderingStats (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixed tests Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: cc/layer_tree_host_impl.cc
diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc
index bcd3248581d46baca373158376149adc06323798..822f8304a8b4115ffd01bdfb06e9e073569f80b8 100644
--- a/cc/layer_tree_host_impl.cc
+++ b/cc/layer_tree_host_impl.cc
@@ -141,13 +141,20 @@ LayerTreeHostImpl::FrameData::~FrameData() {}
scoped_ptr<LayerTreeHostImpl> LayerTreeHostImpl::Create(
const LayerTreeSettings& settings,
LayerTreeHostImplClient* client,
- Proxy* proxy) {
- return make_scoped_ptr(new LayerTreeHostImpl(settings, client, proxy));
+ Proxy* proxy,
+ RenderingStatsInstrumentation* rendering_stats_instrumentation) {
+ return make_scoped_ptr(
+ new LayerTreeHostImpl(settings,
+ client,
+ proxy,
+ rendering_stats_instrumentation));
}
-LayerTreeHostImpl::LayerTreeHostImpl(const LayerTreeSettings& settings,
- LayerTreeHostImplClient* client,
- Proxy* proxy)
+LayerTreeHostImpl::LayerTreeHostImpl(
+ const LayerTreeSettings& settings,
+ LayerTreeHostImplClient* client,
+ Proxy* proxy,
+ RenderingStatsInstrumentation* rendering_stats_instrumentation)
: client_(client),
proxy_(proxy),
did_lock_scrolling_layer_(false),
@@ -166,14 +173,11 @@ LayerTreeHostImpl::LayerTreeHostImpl(const LayerTreeSettings& settings,
paint_time_counter_(PaintTimeCounter::create()),
memory_history_(MemoryHistory::Create()),
debug_rect_history_(DebugRectHistory::Create()),
- num_impl_thread_scrolls_(0),
- num_main_thread_scrolls_(0),
- cumulative_num_layers_drawn_(0),
- cumulative_num_missing_tiles_(0),
last_sent_memory_visible_bytes_(0),
last_sent_memory_visible_and_nearby_bytes_(0),
last_sent_memory_use_bytes_(0),
- animation_registrar_(AnimationRegistrar::create()) {
+ animation_registrar_(AnimationRegistrar::create()),
+ rendering_stats_instrumentation_(rendering_stats_instrumentation) {
DCHECK(proxy_->IsImplThread());
DidVisibilityChange(this, visible_);
@@ -536,6 +540,8 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
// texture suddenly appearing in the future.
bool draw_frame = true;
+ int layers_drawn = 0;
+
LayerIteratorType end =
LayerIteratorType::end(frame->render_surface_layer_list);
for (LayerIteratorType it =
@@ -604,14 +610,15 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
&append_quads_data);
}
- ++cumulative_num_layers_drawn_;
+ ++layers_drawn;
}
if (append_quads_data.hadOcclusionFromOutsideTargetSurface)
target_render_pass->has_occlusion_from_outside_target_surface = true;
if (append_quads_data.numMissingTiles) {
- cumulative_num_missing_tiles_ += append_quads_data.numMissingTiles;
+ rendering_stats_instrumentation_->AddMissingTiles(
+ append_quads_data.numMissingTiles);
bool layer_has_animating_transform =
it->screen_space_transform_is_animating() ||
it->draw_transform_is_animating();
@@ -625,6 +632,8 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
occlusion_tracker.LeaveLayer(it);
}
+ rendering_stats_instrumentation_->AddLayersDrawn(layers_drawn);
+
#ifndef NDEBUG
for (size_t i = 0; i < frame->render_passes.size(); ++i) {
for (size_t j = 0; j < frame->render_passes[i]->quad_list.size(); ++j)
@@ -940,6 +949,11 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame) {
// RenderWidget.
fps_counter_->saveTimeStamp(base::TimeTicks::Now());
+ rendering_stats_instrumentation_->SetScreenFrameCount(
+ fps_counter_->currentFrameNumber());
+ rendering_stats_instrumentation_->SetDroppedFrameCount(
+ fps_counter_->droppedFrameCount());
+
if (tile_manager_) {
memory_history_->SaveEntry(
tile_manager_->memory_stats_from_last_assign());
@@ -1162,8 +1176,8 @@ void LayerTreeHostImpl::ActivatePendingTree() {
client_->RenewTreePriority();
if (tile_manager_ && debug_state_.continuousPainting) {
- RenderingStats stats;
- tile_manager_->GetRenderingStats(&stats);
+ RenderingStats stats =
+ rendering_stats_instrumentation_->GetRenderingStats();
paint_time_counter_->SaveRasterizeTime(
stats.totalRasterizeTimeForNowBinsOnPendingTree,
active_tree_->source_frame_number());
@@ -1223,8 +1237,8 @@ bool LayerTreeHostImpl::InitializeRenderer(
settings_.numRasterThreads,
settings_.useCheapnessEstimator,
settings_.useColorEstimator,
- settings_.predictionBenchmarking));
- tile_manager_->SetRecordRenderingStats(debug_state_.recordRenderingStats());
+ settings_.predictionBenchmarking,
+ rendering_stats_instrumentation_));
}
if (output_surface->capabilities().has_parent_compositor) {
@@ -1349,7 +1363,7 @@ InputHandlerClient::ScrollStatus LayerTreeHostImpl::ScrollBegin(
// thread.
ScrollStatus status = layer_impl->TryScroll(device_viewport_point, type);
if (status == ScrollOnMainThread) {
- num_main_thread_scrolls_++;
+ rendering_stats_instrumentation_->IncrementMainThreadScrolls();
UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", true);
return ScrollOnMainThread;
}
@@ -1362,7 +1376,7 @@ InputHandlerClient::ScrollStatus LayerTreeHostImpl::ScrollBegin(
// If any layer wants to divert the scroll event to the main thread, abort.
if (status == ScrollOnMainThread) {
- num_main_thread_scrolls_++;
+ rendering_stats_instrumentation_->IncrementMainThreadScrolls();
UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", true);
return ScrollOnMainThread;
}
@@ -1385,7 +1399,7 @@ InputHandlerClient::ScrollStatus LayerTreeHostImpl::ScrollBegin(
potentially_scrolling_layer_impl);
should_bubble_scrolls_ = (type != NonBubblingGesture);
wheel_scrolling_ = (type == Wheel);
- num_impl_thread_scrolls_++;
+ rendering_stats_instrumentation_->IncrementImplThreadScrolls();
client_->RenewTreePriority();
UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", false);
return ScrollStarted;
@@ -1778,18 +1792,6 @@ int LayerTreeHostImpl::SourceAnimationFrameNumber() const {
return fps_counter_->currentFrameNumber();
}
-void LayerTreeHostImpl::CollectRenderingStats(RenderingStats* stats) const {
- stats->numFramesSentToScreen = fps_counter_->currentFrameNumber();
- stats->droppedFrameCount = fps_counter_->droppedFrameCount();
- stats->numImplThreadScrolls = num_impl_thread_scrolls_;
- stats->numMainThreadScrolls = num_main_thread_scrolls_;
- stats->numLayersDrawn = cumulative_num_layers_drawn_;
- stats->numMissingTiles = cumulative_num_missing_tiles_;
-
- if (tile_manager_)
- tile_manager_->GetRenderingStats(stats);
-}
-
void LayerTreeHostImpl::SendManagedMemoryStats(
size_t memory_visible_bytes,
size_t memory_visible_and_nearby_bytes,
@@ -1917,9 +1919,6 @@ void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) {
paint_time_counter_->ClearHistory();
debug_state_ = debug_state;
-
- if (tile_manager_)
- tile_manager_->SetRecordRenderingStats(debug_state_.recordRenderingStats());
}
void LayerTreeHostImpl::SavePaintTime(const base::TimeDelta& total_paint_time,

Powered by Google App Engine
This is Rietveld 408576698