diff options
Diffstat (limited to 'tools/timer/Timer.cpp')
-rw-r--r-- | tools/timer/Timer.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tools/timer/Timer.cpp b/tools/timer/Timer.cpp index 28841cdc84..b59988ca26 100644 --- a/tools/timer/Timer.cpp +++ b/tools/timer/Timer.cpp @@ -6,6 +6,52 @@ */ #include "Timer.h" +Timer::Timer(SkGLContext* gl) + : fCpu(-1.0) + , fWall(-1.0) + , fTruncatedCpu(-1.0) + , fTruncatedWall(-1.0) + , fGpu(-1.0) +#if SK_SUPPORT_GPU + , fGpuTimer(gl) +#endif + {} + +void Timer::start() { + fSysTimer.startWall(); + fTruncatedSysTimer.startWall(); +#if SK_SUPPORT_GPU + fGpuTimer.start(); +#endif + fSysTimer.startCpu(); + fTruncatedSysTimer.startCpu(); +} + +void Timer::end() { + fCpu = fSysTimer.endCpu(); +#if SK_SUPPORT_GPU + //It is important to stop the cpu clocks first, + //as the following will cpu wait for the gpu to finish. + fGpu = fGpuTimer.end(); +#endif + fWall = fSysTimer.endWall(); +} + +void Timer::truncatedEnd() { + fTruncatedCpu = fTruncatedSysTimer.endCpu(); + fTruncatedWall = fTruncatedSysTimer.endWall(); +} + +WallTimer::WallTimer() : fWall(-1.0) {} + +void WallTimer::start() { + fSysTimer.startWall(); +} + +void WallTimer::end() { + fWall = fSysTimer.endWall(); +} + SkString HumanizeMs(double ms) { if (ms > 60e+3) return SkStringPrintf("%.3gm", ms/60e+3); if (ms > 1e+3) return SkStringPrintf("%.3gs", ms/1e+3); |