Index: tools/timer/Timer.cpp |
diff --git a/tools/timer/Timer.cpp b/tools/timer/Timer.cpp |
index 28841cdc846f9a93efd02dbb696c36c17b245169..b59988ca2642f5f3330d05ba849cdde8c4c49e0d 100644 |
--- a/tools/timer/Timer.cpp |
+++ b/tools/timer/Timer.cpp |
@@ -5,6 +5,52 @@ |
* found in the LICENSE file. |
*/ |
#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); |