Chromium Code Reviews| Index: cc/layer_tree_host_impl.cc |
| diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc |
| index a81b31faee7c7ab1450074423422399e8ed42ac5..67f6a8eda02483f3611fdc3b5e1491f872b51e9d 100644 |
| --- a/cc/layer_tree_host_impl.cc |
| +++ b/cc/layer_tree_host_impl.cc |
| @@ -137,12 +137,12 @@ LayerTreeHostImpl::FrameData::~FrameData() |
| { |
| } |
| -scoped_ptr<LayerTreeHostImpl> LayerTreeHostImpl::create(const LayerTreeSettings& settings, LayerTreeHostImplClient* client, Proxy* proxy) |
| +scoped_ptr<LayerTreeHostImpl> LayerTreeHostImpl::create(const LayerTreeSettings& settings, LayerTreeHostImplClient* client, Proxy* proxy, RenderingStatsRecorder* renderingStatsRecorder) |
| { |
| - return make_scoped_ptr(new LayerTreeHostImpl(settings, client, proxy)); |
| + return make_scoped_ptr(new LayerTreeHostImpl(settings, client, proxy, renderingStatsRecorder)); |
| } |
| -LayerTreeHostImpl::LayerTreeHostImpl(const LayerTreeSettings& settings, LayerTreeHostImplClient* client, Proxy* proxy) |
| +LayerTreeHostImpl::LayerTreeHostImpl(const LayerTreeSettings& settings, LayerTreeHostImplClient* client, Proxy* proxy, RenderingStatsRecorder* renderingStatsRecorder) |
| : m_client(client) |
| , m_proxy(proxy) |
| , m_didLockScrollingLayer(false) |
| @@ -160,14 +160,11 @@ LayerTreeHostImpl::LayerTreeHostImpl(const LayerTreeSettings& settings, LayerTre |
| , m_paintTimeCounter(PaintTimeCounter::create()) |
| , m_memoryHistory(MemoryHistory::create()) |
| , m_debugRectHistory(DebugRectHistory::create()) |
| - , m_numImplThreadScrolls(0) |
| - , m_numMainThreadScrolls(0) |
| - , m_cumulativeNumLayersDrawn(0) |
| - , m_cumulativeNumMissingTiles(0) |
| , m_lastSentMemoryVisibleBytes(0) |
| , m_lastSentMemoryVisibleAndNearbyBytes(0) |
| , m_lastSentMemoryUseBytes(0) |
| , m_animationRegistrar(AnimationRegistrar::create()) |
| + , m_renderingStatsRecorder(renderingStatsRecorder) |
| { |
| DCHECK(m_proxy->IsImplThread()); |
| didVisibilityChange(this, m_visible); |
| @@ -473,6 +470,8 @@ bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame) |
| // in the future. |
| bool drawFrame = true; |
| + int64 layersDrawn = 0; |
| + |
| LayerIteratorType end = LayerIteratorType::end(frame.renderSurfaceLayerList); |
| for (LayerIteratorType it = LayerIteratorType::begin(frame.renderSurfaceLayerList); it != end; ++it) { |
| RenderPass::Id targetRenderPassId = it.targetRenderSurfaceLayer()->render_surface()->RenderPassId(); |
| @@ -511,14 +510,14 @@ bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame) |
| appendQuadsForLayer(targetRenderPass, *it, occlusionTracker, appendQuadsData); |
| } |
| - ++m_cumulativeNumLayersDrawn; |
| + layersDrawn++; |
|
danakj
2013/03/13 17:25:41
++layersDrawn is best practice
egraether
2013/03/14 18:58:07
Done.
|
| } |
| if (appendQuadsData.hadOcclusionFromOutsideTargetSurface) |
| targetRenderPass->has_occlusion_from_outside_target_surface = true; |
| if (appendQuadsData.numMissingTiles) { |
| - m_cumulativeNumMissingTiles += appendQuadsData.numMissingTiles; |
| + m_renderingStatsRecorder->AddMissingTiles(appendQuadsData.numMissingTiles); |
| bool layerHasAnimatingTransform = it->screen_space_transform_is_animating() || it->draw_transform_is_animating(); |
| if (layerHasAnimatingTransform) |
| drawFrame = false; |
| @@ -530,6 +529,8 @@ bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame) |
| occlusionTracker.LeaveLayer(it); |
| } |
| + m_renderingStatsRecorder->AddLayersDrawn(layersDrawn); |
| + |
| #ifndef NDEBUG |
| for (size_t i = 0; i < frame.renderPasses.size(); ++i) { |
| for (size_t j = 0; j < frame.renderPasses[i]->quad_list.size(); ++j) |
| @@ -804,6 +805,7 @@ void LayerTreeHostImpl::drawLayers(FrameData& frame) |
| // This value is currently inaccessible because it is up in Chromium's |
| // RenderWidget. |
| m_fpsCounter->saveTimeStamp(base::TimeTicks::Now()); |
| + m_renderingStatsRecorder->SetScreenAndDroppedFrameCount(m_fpsCounter->currentFrameNumber(), m_fpsCounter->droppedFrameCount()); |
|
danakj
2013/03/13 17:25:41
"SetScreen" -> "SetFrameNumber" ? What's "Screen"
egraether
2013/03/14 18:58:07
I split this weird double call into separate calls
|
| if (m_tileManager) { |
| m_memoryHistory->SaveEntry( |
| @@ -1024,11 +1026,8 @@ void LayerTreeHostImpl::activatePendingTree() |
| m_client->setNeedsRedrawOnImplThread(); |
| m_client->renewTreePriority(); |
| - if (m_tileManager && m_debugState.continuousPainting) { |
| - RenderingStats stats; |
| - m_tileManager->GetRenderingStats(&stats); |
| - m_paintTimeCounter->SaveRasterizeTime(stats.totalRasterizeTimeForNowBinsOnPendingTree, m_activeTree->source_frame_number()); |
| - } |
| + if (m_tileManager && m_debugState.continuousPainting) |
| + m_paintTimeCounter->SaveRasterizeTime(m_renderingStatsRecorder->GetRenderingStats().totalRasterizeTimeForNowBinsOnPendingTree, m_activeTree->source_frame_number()); |
| } |
| void LayerTreeHostImpl::setVisible(bool visible) |
| @@ -1076,15 +1075,14 @@ bool LayerTreeHostImpl::initializeRenderer(scoped_ptr<OutputSurface> outputSurfa |
| if (!resourceProvider) |
| return false; |
| - if (m_settings.implSidePainting) { |
| + if (m_settings.implSidePainting) |
|
danakj
2013/03/13 17:25:41
keep the {}
egraether
2013/03/14 18:58:07
Done.
|
| m_tileManager.reset(new TileManager(this, |
| resourceProvider.get(), |
| m_settings.numRasterThreads, |
| + m_renderingStatsRecorder, |
| m_settings.useCheapnessEstimator, |
| m_settings.useColorEstimator, |
| m_settings.predictionBenchmarking)); |
| - m_tileManager->SetRecordRenderingStats(m_debugState.recordRenderingStats()); |
| - } |
| if (outputSurface->capabilities().has_parent_compositor) |
| m_renderer = DelegatingRenderer::Create(this, outputSurface.get(), resourceProvider.get()); |
| @@ -1201,7 +1199,7 @@ InputHandlerClient::ScrollStatus LayerTreeHostImpl::scrollBegin(gfx::Point viewp |
| for (; layerImpl; layerImpl = layerImpl->parent()) { |
| // The content layer can also block attempts to scroll outside the main thread. |
| if (layerImpl->TryScroll(deviceViewportPoint, type) == ScrollOnMainThread) { |
| - m_numMainThreadScrolls++; |
| + m_renderingStatsRecorder->IncrementMainThreadScrolls(); |
| UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", true); |
| return ScrollOnMainThread; |
| } |
| @@ -1214,7 +1212,7 @@ InputHandlerClient::ScrollStatus LayerTreeHostImpl::scrollBegin(gfx::Point viewp |
| // If any layer wants to divert the scroll event to the main thread, abort. |
| if (status == ScrollOnMainThread) { |
| - m_numMainThreadScrolls++; |
| + m_renderingStatsRecorder->IncrementMainThreadScrolls(); |
| UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", true); |
| return ScrollOnMainThread; |
| } |
| @@ -1235,7 +1233,7 @@ InputHandlerClient::ScrollStatus LayerTreeHostImpl::scrollBegin(gfx::Point viewp |
| m_activeTree->set_currently_scrolling_layer(potentiallyScrollingLayerImpl); |
| m_shouldBubbleScrolls = (type != NonBubblingGesture); |
| m_wheelScrolling = (type == Wheel); |
| - m_numImplThreadScrolls++; |
| + m_renderingStatsRecorder->IncrementImplThreadScrolls(); |
| m_client->renewTreePriority(); |
| UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", false); |
| return ScrollStarted; |
| @@ -1581,19 +1579,6 @@ int LayerTreeHostImpl::sourceAnimationFrameNumber() const |
| return fpsCounter()->currentFrameNumber(); |
| } |
| -void LayerTreeHostImpl::renderingStats(RenderingStats* stats) const |
| -{ |
| - stats->numFramesSentToScreen = fpsCounter()->currentFrameNumber(); |
| - stats->droppedFrameCount = fpsCounter()->droppedFrameCount(); |
| - stats->numImplThreadScrolls = m_numImplThreadScrolls; |
| - stats->numMainThreadScrolls = m_numMainThreadScrolls; |
| - stats->numLayersDrawn = m_cumulativeNumLayersDrawn; |
| - stats->numMissingTiles = m_cumulativeNumMissingTiles; |
| - |
| - if (m_tileManager) |
| - m_tileManager->GetRenderingStats(stats); |
| -} |
| - |
| void LayerTreeHostImpl::sendManagedMemoryStats( |
| size_t memoryVisibleBytes, |
| size_t memoryVisibleAndNearbyBytes, |
| @@ -1725,9 +1710,6 @@ void LayerTreeHostImpl::setDebugState(const LayerTreeDebugState& debugState) |
| m_paintTimeCounter->ClearHistory(); |
| m_debugState = debugState; |
| - |
| - if (m_tileManager) |
| - m_tileManager->SetRecordRenderingStats(m_debugState.recordRenderingStats()); |
| } |
| void LayerTreeHostImpl::savePaintTime(const base::TimeDelta& totalPaintTime, int commitNumber) |