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

Unified Diff: cc/CCFrameRateCounter.cpp

Issue 11122003: [cc] Rename all cc/ filenames to Chromium style (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 months 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
« no previous file with comments | « cc/CCFrameRateCounter.h ('k') | cc/CCGraphicsContext.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/CCFrameRateCounter.cpp
diff --git a/cc/CCFrameRateCounter.cpp b/cc/CCFrameRateCounter.cpp
deleted file mode 100644
index 80074edee6abd0e6b17aefc997d0a8931bbb8357..0000000000000000000000000000000000000000
--- a/cc/CCFrameRateCounter.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-
-#if USE(ACCELERATED_COMPOSITING)
-#include "CCFrameRateCounter.h"
-
-#include <cmath>
-
-#include "CCProxy.h"
-#include <public/Platform.h>
-#include <wtf/CurrentTime.h>
-
-namespace cc {
-
-const double CCFrameRateCounter::kFrameTooFast = 1.0 / 70.0; // measured in seconds
-const double CCFrameRateCounter::kFrameTooSlow = 1.0 / 12.0;
-const double CCFrameRateCounter::kDroppedFrameTime = 1.0 / 50.0;
-
-// safeMod works on -1, returning m-1 in that case.
-static inline int safeMod(int number, int modulus)
-{
- return (number + modulus) % modulus;
-}
-
-inline double CCFrameRateCounter::frameInterval(int frameNumber) const
-{
- return m_timeStampHistory[frameIndex(frameNumber)] -
- m_timeStampHistory[frameIndex(frameNumber - 1)];
-}
-
-inline int CCFrameRateCounter::frameIndex(int frameNumber) const
-{
- return safeMod(frameNumber, kTimeStampHistorySize);
-}
-
-CCFrameRateCounter::CCFrameRateCounter()
- : m_currentFrameNumber(1)
- , m_droppedFrameCount(0)
-{
- m_timeStampHistory[0] = currentTime();
- m_timeStampHistory[1] = m_timeStampHistory[0];
- for (int i = 2; i < kTimeStampHistorySize; i++)
- m_timeStampHistory[i] = 0;
-}
-
-void CCFrameRateCounter::markBeginningOfFrame(double timestamp)
-{
- m_timeStampHistory[frameIndex(m_currentFrameNumber)] = timestamp;
- double frameIntervalSeconds = frameInterval(m_currentFrameNumber);
-
- if (CCProxy::hasImplThread() && m_currentFrameNumber > 0) {
- double drawDelayMs = frameIntervalSeconds * 1000.0;
- WebKit::Platform::current()->histogramCustomCounts("Renderer4.CompositorThreadImplDrawDelay", static_cast<int>(drawDelayMs), 1, 120, 60);
- }
-
- if (!isBadFrameInterval(frameIntervalSeconds) && frameIntervalSeconds > kDroppedFrameTime)
- ++m_droppedFrameCount;
-}
-
-void CCFrameRateCounter::markEndOfFrame()
-{
- m_currentFrameNumber += 1;
-}
-
-bool CCFrameRateCounter::isBadFrameInterval(double intervalBetweenConsecutiveFrames) const
-{
- bool schedulerAllowsDoubleFrames = !CCProxy::hasImplThread();
- bool intervalTooFast = schedulerAllowsDoubleFrames && intervalBetweenConsecutiveFrames < kFrameTooFast;
- bool intervalTooSlow = intervalBetweenConsecutiveFrames > kFrameTooSlow;
- return intervalTooFast || intervalTooSlow;
-}
-
-bool CCFrameRateCounter::isBadFrame(int frameNumber) const
-{
- return isBadFrameInterval(frameInterval(frameNumber));
-}
-
-void CCFrameRateCounter::getAverageFPSAndStandardDeviation(double& averageFPS, double& standardDeviation) const
-{
- int frame = m_currentFrameNumber - 1;
- averageFPS = 0;
- int averageFPSCount = 0;
- double fpsVarianceNumerator = 0;
-
- // Walk backwards through the samples looking for a run of good frame
- // timings from which to compute the mean and standard deviation.
- //
- // Slow frames occur just because the user is inactive, and should be
- // ignored. Fast frames are ignored if the scheduler is in single-thread
- // mode in order to represent the true frame rate in spite of the fact that
- // the first few swapbuffers happen instantly which skews the statistics
- // too much for short lived animations.
- //
- // isBadFrame encapsulates the frame too slow/frame too fast logic.
- while (1) {
- if (!isBadFrame(frame)) {
- averageFPSCount++;
- double secForLastFrame = m_timeStampHistory[frameIndex(frame)] -
- m_timeStampHistory[frameIndex(frame - 1)];
- double x = 1.0 / secForLastFrame;
- double deltaFromAverage = x - averageFPS;
- // Change with caution - numerics. http://en.wikipedia.org/wiki/Standard_deviation
- averageFPS = averageFPS + deltaFromAverage / averageFPSCount;
- fpsVarianceNumerator = fpsVarianceNumerator + deltaFromAverage * (x - averageFPS);
- }
- if (averageFPSCount && isBadFrame(frame)) {
- // We've gathered a run of good samples, so stop.
- break;
- }
- --frame;
- if (frameIndex(frame) == frameIndex(m_currentFrameNumber) || frame < 0) {
- // We've gone through all available historical data, so stop.
- break;
- }
- }
-
- standardDeviation = sqrt(fpsVarianceNumerator / averageFPSCount);
-}
-
-double CCFrameRateCounter::timeStampOfRecentFrame(int n)
-{
- ASSERT(n >= 0 && n < kTimeStampHistorySize);
- int desiredIndex = (frameIndex(m_currentFrameNumber) + n) % kTimeStampHistorySize;
- return m_timeStampHistory[desiredIndex];
-}
-
-} // namespace cc
-
-#endif // USE(ACCELERATED_COMPOSITING)
« no previous file with comments | « cc/CCFrameRateCounter.h ('k') | cc/CCGraphicsContext.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698