diff options
author | tdanderson@chromium.org <tdanderson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-03 18:00:27 +0000 |
---|---|---|
committer | tdanderson@chromium.org <tdanderson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-03 18:00:27 +0000 |
commit | 5c6fe1f82c4dcd02695537d05423576bca388fea (patch) | |
tree | 94d8d723d3bfead3c49dbd3eb31fbecc3092bd93 /cc | |
parent | 5bb153e3dfd269c49f9f2b7e8f855aac58c0c928 (diff) | |
download | chromium_src-5c6fe1f82c4dcd02695537d05423576bca388fea.zip chromium_src-5c6fe1f82c4dcd02695537d05423576bca388fea.tar.gz chromium_src-5c6fe1f82c4dcd02695537d05423576bca388fea.tar.bz2 |
Track the frequency of impl-thread scrolling vs. main-thread scrolling by introducing the counters |numImplThreadScrolls| and |numMainThreadScrolls|. These values will be reported as part of the GPU scrolling benchmarks.
BUG=152249
Review URL: https://chromiumcodereview.appspot.com/10985082
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159921 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r-- | cc/CCLayerTreeHostImpl.cpp | 13 | ||||
-rw-r--r-- | cc/CCLayerTreeHostImpl.h | 3 | ||||
-rw-r--r-- | cc/CCRenderingStats.h | 4 |
3 files changed, 18 insertions, 2 deletions
diff --git a/cc/CCLayerTreeHostImpl.cpp b/cc/CCLayerTreeHostImpl.cpp index c9255a52..5b1a23d 100644 --- a/cc/CCLayerTreeHostImpl.cpp +++ b/cc/CCLayerTreeHostImpl.cpp @@ -131,6 +131,8 @@ CCLayerTreeHostImpl::CCLayerTreeHostImpl(const CCLayerTreeSettings& settings, CC , m_pinchGestureActive(false) , m_fpsCounter(CCFrameRateCounter::create()) , m_debugRectHistory(CCDebugRectHistory::create()) + , m_numImplThreadScrolls(0) + , m_numMainThreadScrolls(0) { ASSERT(CCProxy::isImplThread()); didVisibilityChange(this, m_visible); @@ -925,8 +927,10 @@ CCInputHandlerClient::ScrollStatus CCLayerTreeHostImpl::scrollBegin(const IntPoi CCLayerImpl* potentiallyScrollingLayerImpl = 0; for (; layerImpl; layerImpl = layerImpl->parent()) { // The content layer can also block attempts to scroll outside the main thread. - if (layerImpl->tryScroll(deviceViewportPoint, type) == ScrollOnMainThread) + if (layerImpl->tryScroll(deviceViewportPoint, type) == ScrollOnMainThread) { + m_numMainThreadScrolls++; return ScrollOnMainThread; + } CCLayerImpl* scrollLayerImpl = findScrollLayerForContentLayer(layerImpl); if (!scrollLayerImpl) @@ -935,8 +939,10 @@ CCInputHandlerClient::ScrollStatus CCLayerTreeHostImpl::scrollBegin(const IntPoi ScrollStatus status = scrollLayerImpl->tryScroll(viewportPoint, type); // If any layer wants to divert the scroll event to the main thread, abort. - if (status == ScrollOnMainThread) + if (status == ScrollOnMainThread) { + m_numMainThreadScrolls++; return ScrollOnMainThread; + } if (status == ScrollStarted && !potentiallyScrollingLayerImpl) potentiallyScrollingLayerImpl = scrollLayerImpl; @@ -948,6 +954,7 @@ CCInputHandlerClient::ScrollStatus CCLayerTreeHostImpl::scrollBegin(const IntPoi // so that the scrolling contents exactly follow the user's finger. In contrast, wheel // events are already in local layer coordinates so we can just apply them directly. m_scrollDeltaIsInScreenSpace = (type == Gesture); + m_numImplThreadScrolls++; return ScrollStarted; } return ScrollIgnored; @@ -1299,6 +1306,8 @@ void CCLayerTreeHostImpl::renderingStats(CCRenderingStats* stats) const { stats->numFramesSentToScreen = fpsCounter()->currentFrameNumber(); stats->droppedFrameCount = fpsCounter()->droppedFrameCount(); + stats->numImplThreadScrolls = m_numImplThreadScrolls; + stats->numMainThreadScrolls = m_numMainThreadScrolls; } void CCLayerTreeHostImpl::animateScrollbars(double monotonicTime) diff --git a/cc/CCLayerTreeHostImpl.h b/cc/CCLayerTreeHostImpl.h index d56e640..691a9b0 100644 --- a/cc/CCLayerTreeHostImpl.h +++ b/cc/CCLayerTreeHostImpl.h @@ -294,6 +294,9 @@ private: OwnPtr<CCFrameRateCounter> m_fpsCounter; OwnPtr<CCDebugRectHistory> m_debugRectHistory; + size_t m_numImplThreadScrolls; + size_t m_numMainThreadScrolls; + DISALLOW_COPY_AND_ASSIGN(CCLayerTreeHostImpl); }; diff --git a/cc/CCRenderingStats.h b/cc/CCRenderingStats.h index 0203df3..fb178a8 100644 --- a/cc/CCRenderingStats.h +++ b/cc/CCRenderingStats.h @@ -16,6 +16,8 @@ struct CCRenderingStats { double totalRasterizeTimeInSeconds; double totalCommitTimeInSeconds; size_t totalCommitCount; + size_t numImplThreadScrolls; + size_t numMainThreadScrolls; CCRenderingStats() : numAnimationFrames(0) @@ -25,6 +27,8 @@ struct CCRenderingStats { , totalRasterizeTimeInSeconds(0) , totalCommitTimeInSeconds(0) , totalCommitCount(0) + , numImplThreadScrolls(0) + , numMainThreadScrolls(0) { } }; |