Index: cc/CCSingleThreadProxy.cpp |
diff --git a/cc/CCSingleThreadProxy.cpp b/cc/CCSingleThreadProxy.cpp |
index f6d4f67f1a9cb60c058611abbc39c5f57cc775e2..a373fc6ee61e9275b1d77e14688babff999bfa49 100644 |
--- a/cc/CCSingleThreadProxy.cpp |
+++ b/cc/CCSingleThreadProxy.cpp |
@@ -16,6 +16,13 @@ |
using namespace WTF; |
+namespace { |
+ |
+// We don't need to split texture uploads into multiple batches if we are single threaded. |
+const size_t maxTextureUpdates = std::numeric_limits<size_t>::max(); |
+ |
+} |
+ |
namespace WebCore { |
PassOwnPtr<CCProxy> CCSingleThreadProxy::create(CCLayerTreeHost* layerTreeHost) |
@@ -28,6 +35,8 @@ CCSingleThreadProxy::CCSingleThreadProxy(CCLayerTreeHost* layerTreeHost) |
, m_contextLost(false) |
, m_rendererInitialized(false) |
, m_nextFrameIsNewlyCommittedFrame(false) |
+ , m_totalCommitTime(0) |
+ , m_totalCommitCount(0) |
{ |
TRACE_EVENT0("cc", "CCSingleThreadProxy::CCSingleThreadProxy"); |
ASSERT(CCProxy::isMainThread()); |
@@ -150,8 +159,10 @@ bool CCSingleThreadProxy::recreateContext() |
return initialized; |
} |
-void CCSingleThreadProxy::implSideRenderingStats(CCRenderingStats& stats) |
+void CCSingleThreadProxy::renderingStats(CCRenderingStats& stats) |
{ |
+ stats.totalCommitTimeInSeconds = m_totalCommitTime; |
+ stats.totalCommitCount = m_totalCommitCount; |
m_layerTreeHostImpl->renderingStats(stats); |
} |
@@ -183,6 +194,7 @@ void CCSingleThreadProxy::doCommit(CCTextureUpdateQueue& queue) |
DebugScopedSetMainThreadBlocked mainThreadBlocked; |
DebugScopedSetImplThread impl; |
+ double startTime = WTF::monotonicallyIncreasingTime(); |
m_layerTreeHostImpl->beginCommit(); |
m_layerTreeHost->beginCommitOnImplThread(m_layerTreeHostImpl.get()); |
@@ -193,7 +205,7 @@ void CCSingleThreadProxy::doCommit(CCTextureUpdateQueue& queue) |
// single thread mode. For correctness, loop until no more updates are |
// pending. |
while (queue.hasMoreUpdates()) |
- CCTextureUpdateController::updateTextures(m_layerTreeHostImpl->resourceProvider(), m_layerTreeHostImpl->renderer()->textureCopier(), m_layerTreeHostImpl->renderer()->textureUploader(), &queue, maxPartialTextureUpdates()); |
+ CCTextureUpdateController::updateTextures(m_layerTreeHostImpl->resourceProvider(), m_layerTreeHostImpl->renderer()->textureCopier(), m_layerTreeHostImpl->renderer()->textureUploader(), &queue, maxTextureUpdates); |
m_layerTreeHost->finishCommitOnImplThread(m_layerTreeHostImpl.get()); |
@@ -205,6 +217,11 @@ void CCSingleThreadProxy::doCommit(CCTextureUpdateQueue& queue) |
OwnPtr<CCScrollAndScaleSet> scrollInfo = m_layerTreeHostImpl->processScrollDeltas(); |
ASSERT(!scrollInfo->scrolls.size()); |
#endif |
+ |
+ double endTime = WTF::monotonicallyIncreasingTime(); |
+ double commitTime = endTime - startTime; |
+ m_totalCommitTime += commitTime; |
+ m_totalCommitCount++; |
} |
m_layerTreeHost->commitComplete(); |
m_nextFrameIsNewlyCommittedFrame = true; |
@@ -287,7 +304,7 @@ bool CCSingleThreadProxy::commitAndComposite() |
} |
CCTextureUpdateQueue queue; |
- m_layerTreeHost->updateLayers(queue, m_layerTreeHostImpl->memoryAllocationLimitBytes()); |
+ m_layerTreeHost->updateLayers(queue, m_layerTreeHostImpl->memoryAllocationLimitBytes(), maxTextureUpdates); |
m_layerTreeHostImpl->resetContentsTexturesPurged(); |
m_layerTreeHost->willCommit(); |