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

Unified Diff: cc/layer_tree_host_impl.cc

Issue 11293121: Add latency measurement system (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: minor input event changes Created 8 years 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_impl.cc
diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc
index 89ebddeeb352afe939c941302827e0f38806e56a..722bd79e8a07d13415143aa11b1a814fef1c932d 100644
--- a/cc/layer_tree_host_impl.cc
+++ b/cc/layer_tree_host_impl.cc
@@ -302,6 +302,7 @@ OutputSurface* LayerTreeHostImpl::outputSurface() const
void LayerTreeHostImpl::animate(base::TimeTicks monotonicTime, base::Time wallClockTime)
{
+ setLatencyInfo(WebKit::WebLatencyInfoImpl());
animatePageScale(monotonicTime);
animateLayers(monotonicTime, wallClockTime);
animateScrollbars(monotonicTime);
@@ -929,10 +930,30 @@ bool LayerTreeHostImpl::swapBuffers()
{
DCHECK(m_renderer);
+ m_createdFrame = false;
+ TRACE_EVENT_ASYNC_END2("cc", "Frame", this, "implFrameNumber", m_latencyInfo.rendererImplFrameNumber, "mainFrameNumber", m_latencyInfo.rendererMainFrameNumber);
+ TRACE_EVENT_INSTANT1("cc", "Frame", "inputNumber", m_latencyInfo.inputNumber);
m_fpsCounter->markEndOfFrame();
return m_renderer->swapBuffers();
}
+void LayerTreeHostImpl::setLatencyInfo(const WebKit::WebLatencyInfoImpl& latency_info) {
+ m_latencyInfo.rendererMainFrameNumber = std::max(latency_info.rendererMainFrameNumber, m_latencyInfo.rendererMainFrameNumber);
+ m_latencyInfo.rendererImplFrameNumber = std::max(latency_info.rendererImplFrameNumber, m_latencyInfo.rendererImplFrameNumber);
+ m_latencyInfo.inputNumber = std::max(latency_info.inputNumber, m_latencyInfo.inputNumber);
+ if (!m_createdFrame) {
+ m_createdFrame = true;
+ m_latencyInfo.rendererImplFrameNumber++;
+ TRACE_EVENT_ASYNC_BEGIN2("cc", "Frame", this, "implFrameNumber", m_latencyInfo.rendererImplFrameNumber, "mainFrameNumber", m_latencyInfo.rendererMainFrameNumber);
+ }
+ if (renderer())
+ renderer()->setLatencyInfo(m_latencyInfo);
+}
+
+void LayerTreeHostImpl::onReceivedLatencyInfo(const WebKit::WebLatencyInfoImpl& latency_info) {
+ m_client->onReceivedLatencyInfo(latency_info);
+}
+
const gfx::Size& LayerTreeHostImpl::deviceViewportSize() const
{
return m_deviceViewportSize;
@@ -1328,7 +1349,8 @@ static gfx::Vector2dF scrollLayerWithLocalDelta(LayerImpl& layerImpl, gfx::Vecto
return layerImpl.scrollDelta() - previousDelta;
}
-bool LayerTreeHostImpl::scrollBy(const gfx::Point& viewportPoint,
+bool LayerTreeHostImpl::scrollBy(int64 input_number,
+ const gfx::Point& viewportPoint,
const gfx::Vector2d& scrollDelta)
{
TRACE_EVENT0("cc", "LayerTreeHostImpl::scrollBy");
@@ -1376,6 +1398,9 @@ bool LayerTreeHostImpl::scrollBy(const gfx::Point& viewportPoint,
}
if (didScroll) {
+ WebKit::WebLatencyInfoImpl latency_info;
+ latency_info.inputNumber = input_number;
+ setLatencyInfo(latency_info);
m_client->setNeedsCommitOnImplThread();
m_client->setNeedsRedrawOnImplThread();
setNeedsUpdateDrawProperties();

Powered by Google App Engine
This is Rietveld 408576698