Chromium Code Reviews| 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; |