| Index: tools/timer/Timer.h
|
| diff --git a/tools/timer/Timer.h b/tools/timer/Timer.h
|
| index 446eb254fd10637a5da944d546cb866309020b57..9557596248c7e8790df63d72f41efb3ec3a6dcb8 100644
|
| --- a/tools/timer/Timer.h
|
| +++ b/tools/timer/Timer.h
|
| @@ -7,18 +7,68 @@
|
| #ifndef Timer_DEFINED
|
| #define Timer_DEFINED
|
|
|
| +#include "SkTypes.h"
|
| #include "SkString.h"
|
| -#include "SkTime.h"
|
| -#include "SkTypes.h"
|
|
|
| +#if defined(SK_BUILD_FOR_WIN32)
|
| + #include "SysTimer_windows.h"
|
| +#elif defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
|
| + #include "SysTimer_mach.h"
|
| +#elif defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_ANDROID)
|
| + #include "SysTimer_posix.h"
|
| +#endif
|
| +
|
| +#if SK_SUPPORT_GPU
|
| + #include "GpuTimer.h"
|
| +#endif
|
| +
|
| +class SkGLContext;
|
| +
|
| +/**
|
| + * 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 Timer {
|
| +public:
|
| + explicit Timer(SkGLContext* gl = nullptr);
|
| +
|
| + void start();
|
| + void truncatedEnd();
|
| + void end();
|
| +
|
| + // All times in milliseconds.
|
| + double fCpu;
|
| + double fWall;
|
| + double fTruncatedCpu;
|
| + double fTruncatedWall;
|
| + double fGpu;
|
| +
|
| +private:
|
| + SysTimer fSysTimer;
|
| + SysTimer fTruncatedSysTimer;
|
| +#if SK_SUPPORT_GPU
|
| + GpuTimer fGpuTimer;
|
| +#endif
|
| +};
|
| +
|
| +// Same as Timer above, supporting only fWall but with much lower overhead.
|
| +// (Typically, ~30ns instead of Timer's ~1us.)
|
| class WallTimer {
|
| public:
|
| - WallTimer() : fWall(-1) {}
|
| + WallTimer();
|
|
|
| - void start() { fWall = SkTime::GetNSecs(); }
|
| - void end() { fWall = (SkTime::GetNSecs() - fWall) * 1e-6; }
|
| + void start();
|
| + void end();
|
|
|
| double fWall; // Milliseconds.
|
| +
|
| +private:
|
| + SysTimer fSysTimer;
|
| };
|
|
|
| SkString HumanizeMs(double);
|
|
|