/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "BenchTimer.h" #if defined(SK_BUILD_FOR_WIN32) #include "BenchSysTimer_windows.h" #elif defined(SK_BUILD_FOR_MAC) #include "BenchSysTimer_mach.h" #elif defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_ANDROID) #include "BenchSysTimer_posix.h" #else #include "BenchSysTimer_c.h" #endif #include "BenchGpuTimer_gl.h" BenchTimer::BenchTimer(SkGLContext* gl) : fCpu(-1.0) , fWall(-1.0) , fGpu(-1.0) { fSysTimer = new BenchSysTimer(); if (gl) { fGpuTimer = new BenchGpuTimer(gl); } else { fGpuTimer = NULL; } } BenchTimer::~BenchTimer() { delete fSysTimer; delete fGpuTimer; } void BenchTimer::start() { fSysTimer->startWall(); if (fGpuTimer) { fGpuTimer->startGpu(); } fSysTimer->startCpu(); } void BenchTimer::end() { fCpu = fSysTimer->endCpu(); //It is important to stop the cpu clocks first, //as the following will cpu wait for the gpu to finish. if (fGpuTimer) { fGpu = fGpuTimer->endGpu(); } fWall = fSysTimer->endWall(); }