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

Unified Diff: cc/layer_tree_host.cc

Issue 12519006: cc:: Add RenderingStatsInstrumentation to manage collection of RenderingStats (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Early out in methods, pass raw pointers, updated 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.cc
diff --git a/cc/layer_tree_host.cc b/cc/layer_tree_host.cc
index c4e8dd43c6925406fe7273923314edcd073609f1..43e6c90ac617b51ef40273b257bbcd17de994a9c 100644
--- a/cc/layer_tree_host.cc
+++ b/cc/layer_tree_host.cc
@@ -75,7 +75,7 @@ LayerTreeHost::LayerTreeHost(LayerTreeHostClient* client, const LayerTreeSetting
, m_needsFilterContext(false)
, m_client(client)
, m_commitNumber(0)
- , m_renderingStats()
+ , m_renderingStatsRecorder(RenderingStatsRecorder::create())
, m_rendererInitialized(false)
, m_outputSurfaceLost(false)
, m_numFailedRecreateAttempts(0)
@@ -94,6 +94,7 @@ LayerTreeHost::LayerTreeHost(LayerTreeHostClient* client, const LayerTreeSetting
if (m_settings.acceleratedAnimationEnabled)
m_animationRegistrar = AnimationRegistrar::create();
numLayerTreeInstances++;
+ m_renderingStatsRecorder->set_record_rendering_stats(m_debugState.recordRenderingStats());
}
bool LayerTreeHost::initialize(scoped_ptr<Thread> implThread)
@@ -229,7 +230,7 @@ void LayerTreeHost::updateAnimations(base::TimeTicks frameBeginTime)
animateLayers(frameBeginTime);
m_animating = false;
- m_renderingStats.numAnimationFrames++;
+ m_renderingStatsRecorder->IncrementAnimationFrameCount();
}
void LayerTreeHost::didStopFlinging()
@@ -334,7 +335,7 @@ void LayerTreeHost::finishCommitOnImplThread(LayerTreeHostImpl* hostImpl)
}
if (m_debugState.continuousPainting)
- hostImpl->savePaintTime(m_renderingStats.totalPaintTime, commitNumber());
+ hostImpl->savePaintTime(m_renderingStatsRecorder->GetRenderingStats().totalPaintTime, commitNumber());
m_commitNumber++;
}
@@ -376,7 +377,7 @@ scoped_ptr<InputHandler> LayerTreeHost::createInputHandler()
scoped_ptr<LayerTreeHostImpl> LayerTreeHost::createLayerTreeHostImpl(LayerTreeHostImplClient* client)
{
DCHECK(m_proxy->IsImplThread());
- scoped_ptr<LayerTreeHostImpl> hostImpl(LayerTreeHostImpl::create(m_settings, client, m_proxy.get()));
+ scoped_ptr<LayerTreeHostImpl> hostImpl(LayerTreeHostImpl::create(m_settings, client, m_proxy.get(), m_renderingStatsRecorder.get()));
if (m_settings.calculateTopControlsPosition && hostImpl->topControlsManager())
m_topControlsManagerWeakPtr = hostImpl->topControlsManager()->AsWeakPtr();
return hostImpl.Pass();
@@ -418,8 +419,12 @@ void LayerTreeHost::didDeferCommit()
void LayerTreeHost::renderingStats(RenderingStats* stats) const
{
CHECK(m_debugState.recordRenderingStats());
- *stats = m_renderingStats;
- m_proxy->GetRenderingStats(stats);
+ *stats = m_renderingStatsRecorder->GetRenderingStats();
+}
+
+RenderingStatsRecorder* LayerTreeHost::renderingStatsRecorder() const
danakj 2013/03/13 17:25:41 rename rendering_stats_recorder()
egraether 2013/03/14 18:58:07 Done.
+{
+ return m_renderingStatsRecorder.get();
danakj 2013/03/13 17:25:41 move this function to the header
egraether 2013/03/14 18:58:07 Done.
}
const RendererCapabilities& LayerTreeHost::rendererCapabilities() const
@@ -491,6 +496,7 @@ void LayerTreeHost::setDebugState(const LayerTreeDebugState& debugState)
return;
m_debugState = newDebugState;
+ m_renderingStatsRecorder->set_record_rendering_stats(m_debugState.recordRenderingStats());
setNeedsCommit();
}
@@ -702,14 +708,12 @@ size_t LayerTreeHost::calculateMemoryForRenderSurfaces(const LayerList& updateLi
return readbackBytes + maxBackgroundTextureBytes + contentsTextureBytes;
}
-bool LayerTreeHost::paintMasksForRenderSurface(Layer* renderSurfaceLayer, ResourceUpdateQueue& queue)
+bool LayerTreeHost::paintMasksForRenderSurface(Layer* renderSurfaceLayer, ResourceUpdateQueue& queue, RenderingStats* stats)
{
// Note: Masks and replicas only exist for layers that own render surfaces. If we reach this point
// in code, we already know that at least something will be drawn into this render surface, so the
// mask and replica should be painted.
- RenderingStats* stats = m_debugState.recordRenderingStats() ? &m_renderingStats : NULL;
-
bool needMoreUpdates = false;
Layer* maskLayer = renderSurfaceLayer->mask_layer();
if (maskLayer) {
@@ -737,7 +741,9 @@ bool LayerTreeHost::paintLayerContents(const LayerList& renderSurfaceLayerList,
prioritizeTextures(renderSurfaceLayerList, occlusionTracker.OverdrawMetrics());
- RenderingStats* stats = m_debugState.recordRenderingStats() ? &m_renderingStats : NULL;
+ // TODO: Switch Layer::update() to use RenderingStatsRecorder
danakj 2013/03/13 17:25:41 stick you ldap in brackets after the TODO - ie TOD
egraether 2013/03/14 18:58:07 Done.
+ RenderingStats stats;
+ RenderingStats* statsPtr = m_debugState.recordRenderingStats() ? &stats : NULL;
LayerIteratorType end = LayerIteratorType::end(&renderSurfaceLayerList);
for (LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); it != end; ++it) {
@@ -745,16 +751,18 @@ bool LayerTreeHost::paintLayerContents(const LayerList& renderSurfaceLayerList,
if (it.representsTargetRenderSurface()) {
DCHECK(it->render_surface()->draw_opacity() || it->render_surface()->draw_opacity_is_animating());
- needMoreUpdates |= paintMasksForRenderSurface(*it, queue);
+ needMoreUpdates |= paintMasksForRenderSurface(*it, queue, statsPtr);
} else if (it.representsItself()) {
DCHECK(!it->bounds().IsEmpty());
- it->Update(&queue, &occlusionTracker, stats);
+ it->Update(&queue, &occlusionTracker, statsPtr);
needMoreUpdates |= it->NeedMoreUpdates();
}
occlusionTracker.LeaveLayer(it);
}
+ m_renderingStatsRecorder->AddStats(stats);
+
occlusionTracker.OverdrawMetrics().RecordMetrics(this);
return needMoreUpdates;

Powered by Google App Engine
This is Rietveld 408576698