Index: tools/timer/Timer.cpp |
diff --git a/tools/timer/Timer.cpp b/tools/timer/Timer.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4f3fc85cff1912678c832546dfd49e7bec58d22d |
--- /dev/null |
+++ b/tools/timer/Timer.cpp |
@@ -0,0 +1,53 @@ |
+/* |
+ * Copyright 2011 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+#include "Timer.h" |
+ |
+Timer::Timer(SkGLContextHelper* 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(); |
+} |