| Index: bench/BenchTimer.h
|
| diff --git a/bench/BenchTimer.h b/bench/BenchTimer.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2abf10b80f9e1d4cca7234cbbd2782af8a37c980
|
| --- /dev/null
|
| +++ b/bench/BenchTimer.h
|
| @@ -0,0 +1,67 @@
|
| +
|
| +/*
|
| + * Copyright 2011 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +#ifndef SkBenchTimer_DEFINED
|
| +#define SkBenchTimer_DEFINED
|
| +
|
| +#include <SkTypes.h>
|
| +
|
| +
|
| +class BenchSysTimer;
|
| +class BenchGpuTimer;
|
| +
|
| +class SkGLContextHelper;
|
| +
|
| +/**
|
| + * SysTimers and GpuTimers are implemented orthogonally.
|
| + * This class combines 2 SysTimers and a GpuTimer into one single,
|
| + * platform specific Timer with a simple interface. The truncated
|
| + * timer doesn't include the time required for the GPU to finish
|
| + * its rendering. It should always be <= the un-truncated system
|
| + * times and (for GPU configurations) can be used to roughly (very
|
| + * roughly) gauge the GPU load/backlog.
|
| + */
|
| +class BenchTimer {
|
| +public:
|
| + BenchTimer(SkGLContextHelper* gl = NULL);
|
| + ~BenchTimer();
|
| + void start(double durationScale = 1);
|
| + void end();
|
| + void truncatedEnd();
|
| + double fCpu;
|
| + double fWall;
|
| + double fTruncatedCpu;
|
| + double fTruncatedWall;
|
| + double fGpu;
|
| +
|
| +private:
|
| + BenchSysTimer* fSysTimer;
|
| + BenchSysTimer* fTruncatedSysTimer;
|
| +#if SK_SUPPORT_GPU
|
| + BenchGpuTimer* fGpuTimer;
|
| +#endif
|
| + double fDurationScale; // for this start/end session
|
| +};
|
| +
|
| +// Same as BenchTimer above, supporting only fWall but with much lower overhead.
|
| +// (Typically, ~30ns instead of BenchTimer's ~1us.)
|
| +class WallTimer {
|
| +public:
|
| + WallTimer();
|
| + ~WallTimer();
|
| +
|
| + void start(double durationScale = 1);
|
| + void end();
|
| +
|
| + double fWall;
|
| +
|
| +private:
|
| + BenchSysTimer* fSysTimer;
|
| + double fDurationScale;
|
| +};
|
| +
|
| +#endif
|
|
|