Home | History | Annotate | Download | only in timer
      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