Home | History | Annotate | Download | only in bench
      1 
      2 /*
      3  * Copyright 2011 Google Inc.
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 #ifndef SkBenchTimer_DEFINED
      9 #define SkBenchTimer_DEFINED
     10 
     11 #include <SkTypes.h>
     12 
     13 
     14 class BenchSysTimer;
     15 class BenchGpuTimer;
     16 
     17 class SkGLContext;
     18 
     19 /**
     20  * SysTimers and GpuTimers are implemented orthogonally.
     21  * This class combines 2 SysTimers and a GpuTimer into one single,
     22  * platform specific Timer with a simple interface. The truncated
     23  * timer doesn't include the time required for the GPU to finish
     24  * its rendering. It should always be <= the un-truncated system
     25  * times and (for GPU configurations) can be used to roughly (very
     26  * roughly) gauge the GPU load/backlog.
     27  */
     28 class BenchTimer {
     29 public:
     30     BenchTimer(SkGLContext* gl = NULL);
     31     ~BenchTimer();
     32     void start();
     33     void end();
     34     void truncatedEnd();
     35     double fCpu;
     36     double fWall;
     37     double fTruncatedCpu;
     38     double fTruncatedWall;
     39     double fGpu;
     40 
     41 private:
     42     BenchSysTimer *fSysTimer;
     43     BenchSysTimer *fTruncatedSysTimer;
     44 #if SK_SUPPORT_GPU
     45     BenchGpuTimer *fGpuTimer;
     46 #endif
     47 };
     48 
     49 #endif
     50