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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layer_tree_host_impl.h" 5 #include "cc/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 return true; 295 return true;
296 } 296 }
297 297
298 OutputSurface* LayerTreeHostImpl::outputSurface() const 298 OutputSurface* LayerTreeHostImpl::outputSurface() const
299 { 299 {
300 return m_outputSurface.get(); 300 return m_outputSurface.get();
301 } 301 }
302 302
303 void LayerTreeHostImpl::animate(base::TimeTicks monotonicTime, base::Time wallCl ockTime) 303 void LayerTreeHostImpl::animate(base::TimeTicks monotonicTime, base::Time wallCl ockTime)
304 { 304 {
305 setLatencyInfo(WebKit::WebLatencyInfoImpl());
305 animatePageScale(monotonicTime); 306 animatePageScale(monotonicTime);
306 animateLayers(monotonicTime, wallClockTime); 307 animateLayers(monotonicTime, wallClockTime);
307 animateScrollbars(monotonicTime); 308 animateScrollbars(monotonicTime);
308 } 309 }
309 310
310 void LayerTreeHostImpl::manageTiles() 311 void LayerTreeHostImpl::manageTiles()
311 { 312 {
312 DCHECK(m_tileManager); 313 DCHECK(m_tileManager);
313 m_tileManager->ManageTiles(); 314 m_tileManager->ManageTiles();
314 } 315 }
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 923
923 const RendererCapabilities& LayerTreeHostImpl::rendererCapabilities() const 924 const RendererCapabilities& LayerTreeHostImpl::rendererCapabilities() const
924 { 925 {
925 return m_renderer->capabilities(); 926 return m_renderer->capabilities();
926 } 927 }
927 928
928 bool LayerTreeHostImpl::swapBuffers() 929 bool LayerTreeHostImpl::swapBuffers()
929 { 930 {
930 DCHECK(m_renderer); 931 DCHECK(m_renderer);
931 932
933 m_createdFrame = false;
934 TRACE_EVENT_ASYNC_END2("cc", "Frame", this, "implFrameNumber", m_latencyInfo .rendererImplFrameNumber, "mainFrameNumber", m_latencyInfo.rendererMainFrameNumb er);
935 TRACE_EVENT_INSTANT1("cc", "Frame", "inputNumber", m_latencyInfo.inputNumber );
932 m_fpsCounter->markEndOfFrame(); 936 m_fpsCounter->markEndOfFrame();
933 return m_renderer->swapBuffers(); 937 return m_renderer->swapBuffers();
934 } 938 }
935 939
940 void LayerTreeHostImpl::setLatencyInfo(const WebKit::WebLatencyInfoImpl& latency _info) {
941 m_latencyInfo.rendererMainFrameNumber = std::max(latency_info.rendererMainFr ameNumber, m_latencyInfo.rendererMainFrameNumber);
942 m_latencyInfo.rendererImplFrameNumber = std::max(latency_info.rendererImplFr ameNumber, m_latencyInfo.rendererImplFrameNumber);
943 m_latencyInfo.inputNumber = std::max(latency_info.inputNumber, m_latencyInfo .inputNumber);
944 if (!m_createdFrame) {
945 m_createdFrame = true;
946 m_latencyInfo.rendererImplFrameNumber++;
947 TRACE_EVENT_ASYNC_BEGIN2("cc", "Frame", this, "implFrameNumber", m_laten cyInfo.rendererImplFrameNumber, "mainFrameNumber", m_latencyInfo.rendererMainFra meNumber);
948 }
949 if (renderer())
950 renderer()->setLatencyInfo(m_latencyInfo);
951 }
952
953 void LayerTreeHostImpl::onReceivedLatencyInfo(const WebKit::WebLatencyInfoImpl& latency_info) {
954 m_client->onReceivedLatencyInfo(latency_info);
955 }
956
936 const gfx::Size& LayerTreeHostImpl::deviceViewportSize() const 957 const gfx::Size& LayerTreeHostImpl::deviceViewportSize() const
937 { 958 {
938 return m_deviceViewportSize; 959 return m_deviceViewportSize;
939 } 960 }
940 961
941 const LayerTreeSettings& LayerTreeHostImpl::settings() const 962 const LayerTreeSettings& LayerTreeHostImpl::settings() const
942 { 963 {
943 return m_settings; 964 return m_settings;
944 } 965 }
945 966
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
1321 return actualViewportEndPoint - viewportPoint; 1342 return actualViewportEndPoint - viewportPoint;
1322 } 1343 }
1323 1344
1324 static gfx::Vector2dF scrollLayerWithLocalDelta(LayerImpl& layerImpl, gfx::Vecto r2dF localDelta) 1345 static gfx::Vector2dF scrollLayerWithLocalDelta(LayerImpl& layerImpl, gfx::Vecto r2dF localDelta)
1325 { 1346 {
1326 gfx::Vector2dF previousDelta(layerImpl.scrollDelta()); 1347 gfx::Vector2dF previousDelta(layerImpl.scrollDelta());
1327 layerImpl.scrollBy(localDelta); 1348 layerImpl.scrollBy(localDelta);
1328 return layerImpl.scrollDelta() - previousDelta; 1349 return layerImpl.scrollDelta() - previousDelta;
1329 } 1350 }
1330 1351
1331 bool LayerTreeHostImpl::scrollBy(const gfx::Point& viewportPoint, 1352 bool LayerTreeHostImpl::scrollBy(int64 input_number,
1353 const gfx::Point& viewportPoint,
1332 const gfx::Vector2d& scrollDelta) 1354 const gfx::Vector2d& scrollDelta)
1333 { 1355 {
1334 TRACE_EVENT0("cc", "LayerTreeHostImpl::scrollBy"); 1356 TRACE_EVENT0("cc", "LayerTreeHostImpl::scrollBy");
1335 if (!currentlyScrollingLayer()) 1357 if (!currentlyScrollingLayer())
1336 return false; 1358 return false;
1337 1359
1338 gfx::Vector2dF pendingDelta = scrollDelta; 1360 gfx::Vector2dF pendingDelta = scrollDelta;
1339 bool didScroll = false; 1361 bool didScroll = false;
1340 1362
1341 for (LayerImpl* layerImpl = currentlyScrollingLayer(); layerImpl; layerImpl = layerImpl->parent()) { 1363 for (LayerImpl* layerImpl = currentlyScrollingLayer(); layerImpl; layerImpl = layerImpl->parent()) {
(...skipping 27 matching lines...) Expand all
1369 // Allow further movement only on an axis perpendicular to the direction in which the layer 1391 // Allow further movement only on an axis perpendicular to the direction in which the layer
1370 // moved. 1392 // moved.
1371 gfx::Vector2dF perpendicularAxis(-appliedDelta.y(), appliedDelta.x()); 1393 gfx::Vector2dF perpendicularAxis(-appliedDelta.y(), appliedDelta.x());
1372 pendingDelta = MathUtil::projectVector(pendingDelta, perpendicularAxis); 1394 pendingDelta = MathUtil::projectVector(pendingDelta, perpendicularAxis);
1373 1395
1374 if (gfx::ToFlooredVector2d(pendingDelta).IsZero()) 1396 if (gfx::ToFlooredVector2d(pendingDelta).IsZero())
1375 break; 1397 break;
1376 } 1398 }
1377 1399
1378 if (didScroll) { 1400 if (didScroll) {
1401 WebKit::WebLatencyInfoImpl latency_info;
1402 latency_info.inputNumber = input_number;
1403 setLatencyInfo(latency_info);
1379 m_client->setNeedsCommitOnImplThread(); 1404 m_client->setNeedsCommitOnImplThread();
1380 m_client->setNeedsRedrawOnImplThread(); 1405 m_client->setNeedsRedrawOnImplThread();
1381 setNeedsUpdateDrawProperties(); 1406 setNeedsUpdateDrawProperties();
1382 } 1407 }
1383 return didScroll; 1408 return didScroll;
1384 } 1409 }
1385 1410
1386 void LayerTreeHostImpl::clearCurrentlyScrollingLayer() 1411 void LayerTreeHostImpl::clearCurrentlyScrollingLayer()
1387 { 1412 {
1388 m_activeTree->ClearCurrentlyScrollingLayer(); 1413 m_activeTree->ClearCurrentlyScrollingLayer();
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1723 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController(); 1748 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController();
1724 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); 1749 double monotonicTime = (time - base::TimeTicks()).InSecondsF();
1725 if (scrollbarController && scrollbarController->animate(monotonicTime)) 1750 if (scrollbarController && scrollbarController->animate(monotonicTime))
1726 m_client->setNeedsRedrawOnImplThread(); 1751 m_client->setNeedsRedrawOnImplThread();
1727 1752
1728 for (size_t i = 0; i < layer->children().size(); ++i) 1753 for (size_t i = 0; i < layer->children().size(); ++i)
1729 animateScrollbarsRecursive(layer->children()[i], time); 1754 animateScrollbarsRecursive(layer->children()[i], time);
1730 } 1755 }
1731 1756
1732 } // namespace cc 1757 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698