summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authortdanderson@chromium.org <tdanderson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-03 18:00:27 +0000
committertdanderson@chromium.org <tdanderson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-03 18:00:27 +0000
commit5c6fe1f82c4dcd02695537d05423576bca388fea (patch)
tree94d8d723d3bfead3c49dbd3eb31fbecc3092bd93 /cc
parent5bb153e3dfd269c49f9f2b7e8f855aac58c0c928 (diff)
downloadchromium_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.cpp13
-rw-r--r--cc/CCLayerTreeHostImpl.h3
-rw-r--r--cc/CCRenderingStats.h4
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)
{
}
};