1 /* 2 * Copyright 2011 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 #include "Timer.h" 8 9 Timer::Timer(SkGLContextHelper* gl) 10 : fCpu(-1.0) 11 , fWall(-1.0) 12 , fTruncatedCpu(-1.0) 13 , fTruncatedWall(-1.0) 14 , fGpu(-1.0) 15 #if SK_SUPPORT_GPU 16 , fGpuTimer(gl) 17 #endif 18 {} 19 20 void Timer::start() { 21 fSysTimer.startWall(); 22 fTruncatedSysTimer.startWall(); 23 #if SK_SUPPORT_GPU 24 fGpuTimer.start(); 25 #endif 26 fSysTimer.startCpu(); 27 fTruncatedSysTimer.startCpu(); 28 } 29 30 void Timer::end() { 31 fCpu = fSysTimer.endCpu(); 32 #if SK_SUPPORT_GPU 33 //It is important to stop the cpu clocks first, 34 //as the following will cpu wait for the gpu to finish. 35 fGpu = fGpuTimer.end(); 36 #endif 37 fWall = fSysTimer.endWall(); 38 } 39 40 void Timer::truncatedEnd() { 41 fTruncatedCpu = fTruncatedSysTimer.endCpu(); 42 fTruncatedWall = fTruncatedSysTimer.endWall(); 43 } 44 45 WallTimer::WallTimer() : fWall(-1.0) {} 46 47 void WallTimer::start() { 48 fSysTimer.startWall(); 49 } 50 51 void WallTimer::end() { 52 fWall = fSysTimer.endWall(); 53 } 54