aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2014-06-20 11:29:20 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-06-20 11:29:21 -0700
commit9ac68ee2594f28dfc1bd16a4bf004b1a4f6f228d (patch)
tree01874abc7df6a4840e9b1763e156842c7faba0c2
parent24480bc71ef6c754030cb3f98672da1c8fb3a63b (diff)
Move BenchTimer to tools as Timer
This breaks a bunch of circular dependencies between tools and gm and bench. BUG=skia: Committed: https://skia.googlesource.com/skia/+/4ed75287aed6371c6e4a41ffcc78c8a49c9810ed CQ_EXTRA_TRYBOTS=tryserver.skia:Build-Mac10.7-Clang-Arm7-Debug-iOS-Trybot,Test-Ubuntu12-ShuttleA-GTX660-x86-Debug-Trybot R=tfarina@chromium.org, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/344213003
-rw-r--r--bench/BenchSysTimer_c.cpp27
-rw-r--r--bench/BenchSysTimer_c.h26
-rw-r--r--bench/BenchTimer.cpp94
-rw-r--r--bench/benchmain.cpp6
-rw-r--r--debugger/QT/SkDebuggerGUI.cpp10
-rw-r--r--gyp/SampleApp.gyp2
-rw-r--r--gyp/apptype_console.gypi2
-rw-r--r--gyp/bench.gyp64
-rw-r--r--gyp/crash_handler.gyp18
-rw-r--r--gyp/debugger.gyp2
-rw-r--r--gyp/dm.gyp2
-rw-r--r--gyp/gm.gyp27
-rw-r--r--gyp/resources.gyp25
-rw-r--r--gyp/skia_launcher.gyp3
-rw-r--r--gyp/tests.gyp2
-rw-r--r--gyp/tests.gypi2
-rw-r--r--gyp/tools.gyp107
-rw-r--r--platform_tools/android/gyp/skia_android.gypi7
-rw-r--r--platform_tools/android/gyp/skia_launcher.gypi7
-rw-r--r--tools/DumpRecord.cpp4
-rw-r--r--tools/PictureBenchmark.cpp16
-rw-r--r--tools/PictureBenchmark.h4
-rw-r--r--tools/bbh_shootout.cpp8
-rw-r--r--tools/bench_pictures_main.cpp2
-rw-r--r--tools/bench_playback.cpp11
-rw-r--r--tools/bench_record.cpp22
-rw-r--r--tools/skpdiff/skpdiff_util.cpp2
-rw-r--r--tools/timer/GpuTimer.cpp (renamed from bench/BenchGpuTimer_gl.cpp)47
-rw-r--r--tools/timer/GpuTimer.h (renamed from bench/BenchGpuTimer_gl.h)15
-rw-r--r--tools/timer/SysTimer_mach.cpp (renamed from bench/BenchSysTimer_mach.cpp)54
-rw-r--r--tools/timer/SysTimer_mach.h (renamed from bench/BenchSysTimer_mach.h)8
-rw-r--r--tools/timer/SysTimer_posix.cpp (renamed from bench/BenchSysTimer_posix.cpp)36
-rw-r--r--tools/timer/SysTimer_posix.h (renamed from bench/BenchSysTimer_posix.h)8
-rw-r--r--tools/timer/SysTimer_windows.cpp (renamed from bench/BenchSysTimer_windows.cpp)34
-rw-r--r--tools/timer/SysTimer_windows.h (renamed from bench/BenchSysTimer_windows.h)7
-rw-r--r--tools/timer/Timer.cpp53
-rw-r--r--tools/timer/Timer.h (renamed from bench/BenchTimer.h)50
-rw-r--r--tools/timer/TimerData.cpp (renamed from bench/TimerData.cpp)24
-rw-r--r--tools/timer/TimerData.h (renamed from bench/TimerData.h)9
39 files changed, 337 insertions, 510 deletions
diff --git a/bench/BenchSysTimer_c.cpp b/bench/BenchSysTimer_c.cpp
deleted file mode 100644
index f4cbd39d73..0000000000
--- a/bench/BenchSysTimer_c.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-
-/*
- * 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 "BenchSysTimer_c.h"
-
-//Time
-#include <time.h>
-
-void BenchSysTimer::startWall() {
- this->fStartWall = time();
-}
-void BenchSysTimer::startCpu() {
- this->fStartCpu = clock();
-}
-
-double BenchSysTimer::endCpu() {
- clock_t end_cpu = clock();
- this->fCpu = (end_cpu - this->fStartCpu) * CLOCKS_PER_SEC / 1000.0;
-}
-double BenchSysTimer::endWall() {
- time_t end_wall = time();
- this->fWall = difftime(end_wall, this->fstartWall) / 1000.0;
-}
diff --git a/bench/BenchSysTimer_c.h b/bench/BenchSysTimer_c.h
deleted file mode 100644
index 586f0b4ff0..0000000000
--- a/bench/BenchSysTimer_c.h
+++ /dev/null
@@ -1,26 +0,0 @@
-
-/*
- * 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 SkBenchSysTimer_DEFINED
-#define SkBenchSysTimer_DEFINED
-
-//Time
-#include <time.h>
-
-// Beware: this timer uses standard (as opposed to high precision) clocks
-class BenchSysTimer {
-public:
- void startWall();
- void startCpu();
- double endCpu();
- double endWall();
-private:
- clock_t start_cpu;
- time_t fStartWall;
-};
-
-#endif
diff --git a/bench/BenchTimer.cpp b/bench/BenchTimer.cpp
deleted file mode 100644
index f3e8e3b0ec..0000000000
--- a/bench/BenchTimer.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-
-/*
- * 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
-
-#if SK_SUPPORT_GPU
-#include "BenchGpuTimer_gl.h"
-#endif
-
-BenchTimer::BenchTimer(SkGLContextHelper* gl)
- : fCpu(-1.0)
- , fWall(-1.0)
- , fTruncatedCpu(-1.0)
- , fTruncatedWall(-1.0)
- , fGpu(-1.0)
-{
- fSysTimer = new BenchSysTimer();
- fTruncatedSysTimer = new BenchSysTimer();
-#if SK_SUPPORT_GPU
- if (gl) {
- fGpuTimer = new BenchGpuTimer(gl);
- } else {
- fGpuTimer = NULL;
- }
-#endif
-}
-
-BenchTimer::~BenchTimer() {
- delete fSysTimer;
- delete fTruncatedSysTimer;
-#if SK_SUPPORT_GPU
- delete fGpuTimer;
-#endif
-}
-
-void BenchTimer::start(double durationScale) {
- fDurationScale = durationScale;
-
- fSysTimer->startWall();
- fTruncatedSysTimer->startWall();
-#if SK_SUPPORT_GPU
- if (fGpuTimer) {
- fGpuTimer->startGpu();
- }
-#endif
- fSysTimer->startCpu();
- fTruncatedSysTimer->startCpu();
-}
-
-void BenchTimer::end() {
- fCpu = fSysTimer->endCpu() * fDurationScale;
-#if SK_SUPPORT_GPU
- //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() * fDurationScale;
- }
-#endif
- fWall = fSysTimer->endWall() * fDurationScale;
-}
-
-void BenchTimer::truncatedEnd() {
- fTruncatedCpu = fTruncatedSysTimer->endCpu() * fDurationScale;
- fTruncatedWall = fTruncatedSysTimer->endWall() * fDurationScale;
-}
-
-WallTimer::WallTimer() : fWall(-1.0), fSysTimer(new BenchSysTimer) {}
-
-WallTimer::~WallTimer() {
- delete fSysTimer;
-}
-
-void WallTimer::start(double durationScale) {
- fDurationScale = durationScale;
- fSysTimer->startWall();
-}
-
-void WallTimer::end() {
- fWall = fSysTimer->endWall() * fDurationScale;
-}
-
diff --git a/bench/benchmain.cpp b/bench/benchmain.cpp
index 6b3f5872f2..5c3b7901af 100644
--- a/bench/benchmain.cpp
+++ b/bench/benchmain.cpp
@@ -6,7 +6,6 @@
*/
#include "BenchLogger.h"
-#include "BenchTimer.h"
#include "Benchmark.h"
#include "CrashHandler.h"
#include "GMBench.h"
@@ -24,6 +23,7 @@
#include "SkPictureRecorder.h"
#include "SkString.h"
#include "SkSurface.h"
+#include "Timer.h"
#if SK_SUPPORT_GPU
#include "GrContext.h"
@@ -530,9 +530,9 @@ int tool_main(int argc, char** argv) {
if (Benchmark::kGPU_Backend == config.backend) {
contextHelper = gContextFactory.getGLContext(config.contextType);
}
- BenchTimer timer(contextHelper);
+ Timer timer(contextHelper);
#else
- BenchTimer timer;
+ Timer timer;
#endif
double previous = std::numeric_limits<double>::infinity();
diff --git a/debugger/QT/SkDebuggerGUI.cpp b/debugger/QT/SkDebuggerGUI.cpp
index 1873afca67..5cecba273c 100644
--- a/debugger/QT/SkDebuggerGUI.cpp
+++ b/debugger/QT/SkDebuggerGUI.cpp
@@ -17,13 +17,13 @@
__SK_FORCE_IMAGE_DECODER_LINKING;
#if defined(SK_BUILD_FOR_WIN32)
- #include "BenchSysTimer_windows.h"
+ #include "SysTimer_windows.h"
#elif defined(SK_BUILD_FOR_MAC)
- #include "BenchSysTimer_mach.h"
+ #include "SysTimer_mach.h"
#elif defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_ANDROID)
- #include "BenchSysTimer_posix.h"
+ #include "SysTimer_posix.h"
#else
- #include "BenchSysTimer_c.h"
+ #include "SysTimer_c.h"
#endif
@@ -202,7 +202,7 @@ public:
double totTime() const { return fTot; }
protected:
- BenchSysTimer fTimer;
+ SysTimer fTimer;
SkTDArray<bool> fSkipCommands; // has the command been deleted in the GUI?
SkTDArray<double> fTimes; // sum of time consumed for each command
SkTDArray<double> fTypeTimes; // sum of time consumed for each type of command (e.g., drawPath)
diff --git a/gyp/SampleApp.gyp b/gyp/SampleApp.gyp
index abfc8b77f9..9ced81b98f 100644
--- a/gyp/SampleApp.gyp
+++ b/gyp/SampleApp.gyp
@@ -150,8 +150,8 @@
'flags.gyp:flags',
'lua.gyp:lua',
'pdf.gyp:pdf',
- 'resources.gyp:resources',
'skia_lib.gyp:skia_lib',
+ 'tools.gyp:resources',
'views.gyp:views',
'views_animated.gyp:views_animated',
'xml.gyp:xml',
diff --git a/gyp/apptype_console.gypi b/gyp/apptype_console.gypi
index cde87792c7..b9939987b8 100644
--- a/gyp/apptype_console.gypi
+++ b/gyp/apptype_console.gypi
@@ -15,7 +15,7 @@
[ 'skia_os == "android" and not skia_android_framework', {
'dependencies': [
'android_deps.gyp:Android_EntryPoint',
- 'android_system.gyp:skia_launcher',
+ 'skia_launcher.gyp:skia_launcher',
],
}],
[ 'skia_os == "nacl"', {
diff --git a/gyp/bench.gyp b/gyp/bench.gyp
index 15927e6413..1c1943705f 100644
--- a/gyp/bench.gyp
+++ b/gyp/bench.gyp
@@ -9,13 +9,13 @@
'target_name': 'bench',
'type': 'executable',
'dependencies': [
- 'bench_timer',
- 'crash_handler.gyp:CrashHandler',
'etc1.gyp:libetc1',
'flags.gyp:flags',
'jsoncpp.gyp:jsoncpp',
- 'resources.gyp:resources',
'skia_lib.gyp:skia_lib',
+ 'tools.gyp:crash_handler',
+ 'tools.gyp:resources',
+ 'tools.gyp:timer',
],
'sources': [
'../bench/BenchLogger.cpp',
@@ -50,63 +50,5 @@
'gmslides.gypi',
],
},
- {
- 'target_name' : 'bench_timer',
- 'type': 'static_library',
- 'sources': [
- '../bench/BenchTimer.h',
- '../bench/BenchTimer.cpp',
- '../bench/BenchSysTimer_mach.h',
- '../bench/BenchSysTimer_mach.cpp',
- '../bench/BenchSysTimer_posix.h',
- '../bench/BenchSysTimer_posix.cpp',
- '../bench/BenchSysTimer_windows.h',
- '../bench/BenchSysTimer_windows.cpp',
- ],
- 'include_dirs': [
- '../src/core',
- '../src/gpu',
- '../tools',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': ['../bench'],
- },
- 'dependencies': [
- 'skia_lib.gyp:skia_lib',
- ],
- 'conditions': [
- [ 'skia_os not in ["mac", "ios"]', {
- 'sources!': [
- '../bench/BenchSysTimer_mach.h',
- '../bench/BenchSysTimer_mach.cpp',
- ],
- }],
- [ 'skia_os not in ["linux", "freebsd", "openbsd", "solaris", "android", "chromeos"]', {
- 'sources!': [
- '../bench/BenchSysTimer_posix.h',
- '../bench/BenchSysTimer_posix.cpp',
- ],
- }],
- [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "chromeos"]', {
- 'link_settings': {
- 'libraries': [
- '-lrt',
- ],
- },
- }],
- [ 'skia_os != "win"', {
- 'sources!': [
- '../bench/BenchSysTimer_windows.h',
- '../bench/BenchSysTimer_windows.cpp',
- ],
- }],
- ['skia_gpu == 1', {
- 'sources': [
- '../bench/BenchGpuTimer_gl.h',
- '../bench/BenchGpuTimer_gl.cpp',
- ],
- }],
- ],
- }
],
}
diff --git a/gyp/crash_handler.gyp b/gyp/crash_handler.gyp
deleted file mode 100644
index 7e3599c8d9..0000000000
--- a/gyp/crash_handler.gyp
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- 'targets': [{
- 'target_name': 'CrashHandler',
- 'type': 'static_library',
- 'sources': [ '../tools/CrashHandler.cpp' ],
- 'dependencies': [ 'skia_lib.gyp:skia_lib' ],
- 'direct_dependent_settings': {
- 'include_dirs': [ '../tools' ],
- },
- 'all_dependent_settings': {
- 'msvs_settings': {
- 'VCLinkerTool': {
- 'AdditionalDependencies': [ 'Dbghelp.lib' ],
- }
- },
- }
- }]
-}
diff --git a/gyp/debugger.gyp b/gyp/debugger.gyp
index 84f03972df..4add7439a8 100644
--- a/gyp/debugger.gyp
+++ b/gyp/debugger.gyp
@@ -96,8 +96,8 @@
],
'dependencies': [
'skia_lib.gyp:skia_lib',
- 'bench.gyp:bench_timer',
'tools.gyp:picture_renderer',
+ 'tools.gyp:timer',
],
'conditions': [
[ 'skia_os == "nacl"', {
diff --git a/gyp/dm.gyp b/gyp/dm.gyp
index f69ffe5f4b..2d02796b45 100644
--- a/gyp/dm.gyp
+++ b/gyp/dm.gyp
@@ -55,12 +55,12 @@
'../src/utils/debugger/SkObjectParser.cpp',
],
'dependencies': [
- 'crash_handler.gyp:CrashHandler',
'etc1.gyp:libetc1',
'flags.gyp:flags',
'gputest.gyp:skgputest',
'jsoncpp.gyp:jsoncpp',
'skia_lib.gyp:skia_lib',
+ 'tools.gyp:crash_handler',
],
'conditions': [
['skia_android_framework', {
diff --git a/gyp/gm.gyp b/gyp/gm.gyp
index 0b0054b701..fd56e7eebe 100644
--- a/gyp/gm.gyp
+++ b/gyp/gm.gyp
@@ -5,28 +5,6 @@
],
'targets': [
{
- 'target_name': 'gm_expectations',
- 'type': 'static_library',
- 'include_dirs' : [
- '../src/utils/',
- ],
- 'sources': [
- '../gm/gm_expectations.h',
- '../gm/gm_expectations.cpp',
- '../tools/sk_tool_utils.cpp',
- ],
- 'dependencies': [
- 'crash_handler.gyp:CrashHandler',
- 'jsoncpp.gyp:jsoncpp',
- 'skia_lib.gyp:skia_lib',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '../gm/',
- ],
- },
- },
- {
'target_name': 'gm',
'type': 'executable',
'include_dirs' : [
@@ -49,11 +27,12 @@
'dependencies': [
'etc1.gyp:libetc1',
'flags.gyp:flags',
- 'gm.gyp:gm_expectations',
'jsoncpp.gyp:jsoncpp',
'pdf.gyp:pdf',
- 'resources.gyp:resources',
'skia_lib.gyp:skia_lib',
+ 'tools.gyp:crash_handler',
+ 'tools.gyp:gm_expectations',
+ 'tools.gyp:resources',
],
'conditions': [
['skia_android_framework', {
diff --git a/gyp/resources.gyp b/gyp/resources.gyp
deleted file mode 100644
index 48e96c3cc5..0000000000
--- a/gyp/resources.gyp
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2014 Google Inc.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'targets': [
- {
- 'target_name': 'resources',
- 'type': 'static_library',
- 'sources': [
- '../tools/Resources.cpp',
- '../tools/Resources.h',
- ],
- 'dependencies': [
- 'flags.gyp:flags',
- 'skia_lib.gyp:skia_lib',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '../tools/',
- ],
- },
- },
- ]
-}
diff --git a/gyp/skia_launcher.gyp b/gyp/skia_launcher.gyp
new file mode 100644
index 0000000000..d9970b4290
--- /dev/null
+++ b/gyp/skia_launcher.gyp
@@ -0,0 +1,3 @@
+{
+ 'includes': [ '../platform_tools/android/gyp/skia_launcher.gypi' ]
+}
diff --git a/gyp/tests.gyp b/gyp/tests.gyp
index 80768efa35..155207ed6f 100644
--- a/gyp/tests.gyp
+++ b/gyp/tests.gyp
@@ -11,7 +11,7 @@
'pathops_unittest.gypi',
'tests.gypi',
],
- 'dependencies': [ 'crash_handler.gyp:CrashHandler' ],
+ 'dependencies': [ 'tools.gyp:crash_handler' ],
'sources': [
'../tests/skia_test.cpp',
],
diff --git a/gyp/tests.gypi b/gyp/tests.gypi
index 2a7dddd4ff..f135107c34 100644
--- a/gyp/tests.gypi
+++ b/gyp/tests.gypi
@@ -20,9 +20,9 @@
'experimental.gyp:experimental',
'flags.gyp:flags',
'pdf.gyp:pdf',
- 'resources.gyp:resources',
'skia_lib.gyp:skia_lib',
'tools.gyp:picture_utils',
+ 'tools.gyp:resources',
],
'sources': [
'../tests/Test.cpp',
diff --git a/gyp/tools.gyp b/gyp/tools.gyp
index 5ea127296a..eeb210a497 100644
--- a/gyp/tools.gyp
+++ b/gyp/tools.gyp
@@ -43,6 +43,86 @@
],
],
},
+ { # This would go in gm.gyp, but it's also used by skimage below.
+ 'target_name': 'gm_expectations',
+ 'type': 'static_library',
+ 'include_dirs' : [ '../src/utils/' ],
+ 'sources': [
+ '../gm/gm_expectations.cpp',
+ '../tools/sk_tool_utils.cpp',
+ ],
+ 'dependencies': [
+ 'jsoncpp.gyp:jsoncpp',
+ 'skia_lib.gyp:skia_lib',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [ '../gm/' ],
+ },
+ },
+ {
+ 'target_name': 'crash_handler',
+ 'type': 'static_library',
+ 'sources': [ '../tools/CrashHandler.cpp' ],
+ 'dependencies': [ 'skia_lib.gyp:skia_lib' ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [ '../tools' ],
+ },
+ 'all_dependent_settings': {
+ 'msvs_settings': {
+ 'VCLinkerTool': {
+ 'AdditionalDependencies': [ 'Dbghelp.lib' ],
+ }
+ },
+ }
+ },
+ {
+ 'target_name': 'resources',
+ 'type': 'static_library',
+ 'sources': [ '../tools/Resources.cpp' ],
+ 'dependencies': [
+ 'flags.gyp:flags',
+ 'skia_lib.gyp:skia_lib',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [ '../tools/', ],
+ },
+ },
+ {
+ 'target_name' : 'timer',
+ 'type': 'static_library',
+ 'sources': [
+ '../tools/timer/Timer.cpp',
+ '../tools/timer/TimerData.cpp',
+ ],
+ 'include_dirs': [
+ '../src/core',
+ '../src/gpu',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': ['../tools/timer'],
+ },
+ 'dependencies': [
+ 'skia_lib.gyp:skia_lib',
+ 'jsoncpp.gyp:jsoncpp',
+ ],
+ 'conditions': [
+ ['skia_gpu == 1', {
+ 'sources': [ '../tools/timer/GpuTimer.cpp' ],
+ }],
+ [ 'skia_os in ["mac", "ios"]', {
+ 'sources': [ '../tools/timer/SysTimer_mach.cpp' ],
+ }],
+ [ 'skia_os == "win"', {
+ 'sources': [ '../tools/timer/SysTimer_windows.cpp' ],
+ }],
+ [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "android", "chromeos"]', {
+ 'sources': [ '../tools/timer/SysTimer_posix.cpp' ],
+ }],
+ [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "chromeos"]', {
+ 'link_settings': { 'libraries': [ '-lrt' ] },
+ }],
+ ],
+ },
{
'target_name': 'skdiff',
'type': 'executable',
@@ -178,8 +258,8 @@
'../src/utils/',
],
'dependencies': [
+ 'gm_expectations',
'flags.gyp:flags',
- 'gm.gyp:gm_expectations',
'jsoncpp.gyp:jsoncpp',
'skia_lib.gyp:skia_lib',
],
@@ -299,14 +379,13 @@
'../src/lazy/',
],
'dependencies': [
- 'bench.gyp:bench_timer',
- 'crash_handler.gyp:CrashHandler',
+ 'timer',
+ 'crash_handler',
'flags.gyp:flags',
'jsoncpp.gyp:jsoncpp',
'skia_lib.gyp:skia_lib',
'tools.gyp:picture_renderer',
'tools.gyp:picture_utils',
- 'tools.gyp:timer_data',
],
},
{
@@ -322,7 +401,7 @@
'../src/lazy',
],
'dependencies': [
- 'bench.gyp:bench_timer',
+ 'timer',
'flags.gyp:flags',
'skia_lib.gyp:skia_lib',
],
@@ -338,7 +417,7 @@
'../src/images',
],
'dependencies': [
- 'bench.gyp:bench_timer',
+ 'timer',
'flags.gyp:flags',
'skia_lib.gyp:skia_lib',
],
@@ -357,7 +436,7 @@
'../src/lazy',
],
'dependencies': [
- 'bench.gyp:bench_timer',
+ 'timer',
'flags.gyp:flags',
'skia_lib.gyp:skia_lib',
],
@@ -505,9 +584,8 @@
# Bench code:
],
'dependencies': [
- 'bench.gyp:bench_timer',
+ 'timer',
'flags.gyp:flags',
- 'tools.gyp:timer_data',
'skia_lib.gyp:skia_lib',
'tools.gyp:picture_renderer',
'tools.gyp:picture_utils',
@@ -544,17 +622,6 @@
'skia_lib.gyp:skia_lib',
],
},
- {
- 'target_name': 'timer_data',
- 'type': 'static_library',
- 'sources': [
- '../bench/TimerData.cpp',
- ],
- 'dependencies': [
- 'skia_lib.gyp:skia_lib',
- 'jsoncpp.gyp:jsoncpp'
- ]
- }
],
'conditions': [
['skia_shared_lib',
diff --git a/platform_tools/android/gyp/skia_android.gypi b/platform_tools/android/gyp/skia_android.gypi
index 9ebee7cc6d..624b599bd6 100644
--- a/platform_tools/android/gyp/skia_android.gypi
+++ b/platform_tools/android/gyp/skia_android.gypi
@@ -45,13 +45,6 @@
],
},
{
- 'target_name': 'skia_launcher',
- 'type': 'executable',
- 'sources': [
- '../launcher/skia_launcher.cpp',
- ],
- },
- {
'target_name': 'SampleApp_APK',
'type': 'none',
'dependencies': [
diff --git a/platform_tools/android/gyp/skia_launcher.gypi b/platform_tools/android/gyp/skia_launcher.gypi
new file mode 100644
index 0000000000..f8b5dfd794
--- /dev/null
+++ b/platform_tools/android/gyp/skia_launcher.gypi
@@ -0,0 +1,7 @@
+{
+ 'targets': [{
+ 'target_name': 'skia_launcher',
+ 'type': 'executable',
+ 'sources': [ '../launcher/skia_launcher.cpp' ],
+ }]
+}
diff --git a/tools/DumpRecord.cpp b/tools/DumpRecord.cpp
index 2376fb9cf0..6e679a5430 100644
--- a/tools/DumpRecord.cpp
+++ b/tools/DumpRecord.cpp
@@ -10,8 +10,8 @@
#include "SkRecord.h"
#include "SkRecordDraw.h"
-#include "BenchTimer.h"
#include "DumpRecord.h"
+#include "Timer.h"
namespace {
@@ -33,7 +33,7 @@ public:
template <typename T>
void operator()(const T& command) {
- BenchTimer timer;
+ Timer timer;
timer.start();
fDraw(command);
timer.end();
diff --git a/tools/PictureBenchmark.cpp b/tools/PictureBenchmark.cpp
index 30967c7381..85a49f4e5e 100644
--- a/tools/PictureBenchmark.cpp
+++ b/tools/PictureBenchmark.cpp
@@ -5,7 +5,7 @@
* found in the LICENSE file.
*/
-#include "BenchTimer.h"
+#include "Timer.h"
#include "PictureBenchmark.h"
#include "SkCanvas.h"
#include "SkPicture.h"
@@ -42,13 +42,13 @@ void PictureBenchmark::setTimersToShow(bool wall,
fTimerTypes |= gpu ? TimerData::kGpu_Flag : 0;
}
-BenchTimer* PictureBenchmark::setupTimer(bool useGLTimer) {
+Timer* PictureBenchmark::setupTimer(bool useGLTimer) {
#if SK_SUPPORT_GPU
if (useGLTimer && fRenderer != NULL && fRenderer->isUsingGpuDevice()) {
- return SkNEW_ARGS(BenchTimer, (fRenderer->getGLContext()));
+ return SkNEW_ARGS(Timer, (fRenderer->getGLContext()));
}
#endif
- return SkNEW_ARGS(BenchTimer, (NULL));
+ return SkNEW_ARGS(Timer, (NULL));
}
PictureRenderer* PictureBenchmark::setRenderer(sk_tools::PictureRenderer* renderer) {
@@ -147,11 +147,11 @@ void PictureBenchmark::run(SkPicture* pict) {
// seems to cause problems (i.e., INVALID_OPERATIONs) on several
// platforms. To work around this, we disable the gpu timer on the
// long running timer.
- SkAutoTDelete<BenchTimer> longRunningTimer(this->setupTimer());
+ SkAutoTDelete<Timer> longRunningTimer(this->setupTimer());
TimerData longRunningTimerData(numOuterLoops);
for (int outer = 0; outer < numOuterLoops; ++outer) {
- SkAutoTDelete<BenchTimer> perTileTimer(this->setupTimer(false));
+ SkAutoTDelete<Timer> perTileTimer(this->setupTimer(false));
TimerData perTileTimerData(numInnerLoops);
longRunningTimer->start();
@@ -201,11 +201,11 @@ void PictureBenchmark::run(SkPicture* pict) {
numInnerLoops);
}
} else {
- SkAutoTDelete<BenchTimer> longRunningTimer(this->setupTimer());
+ SkAutoTDelete<Timer> longRunningTimer(this->setupTimer());
TimerData longRunningTimerData(numOuterLoops);
for (int outer = 0; outer < numOuterLoops; ++outer) {
- SkAutoTDelete<BenchTimer> perRunTimer(this->setupTimer(false));
+ SkAutoTDelete<Timer> perRunTimer(this->setupTimer(false));
TimerData perRunTimerData(numInnerLoops);
longRunningTimer->start();
diff --git a/tools/PictureBenchmark.h b/tools/PictureBenchmark.h
index 142d52685e..1ddd18ea16 100644
--- a/tools/PictureBenchmark.h
+++ b/tools/PictureBenchmark.h
@@ -13,8 +13,8 @@
#include "SkTypes.h"
#include "TimerData.h"
-class BenchTimer;
class SkPicture;
+class Timer;
namespace sk_tools {
@@ -67,7 +67,7 @@ private:
PictureResultsWriter* fWriter;
- BenchTimer* setupTimer(bool useGLTimer = true);
+ Timer* setupTimer(bool useGLTimer = true);
};
}
diff --git a/tools/bbh_shootout.cpp b/tools/bbh_shootout.cpp
index e657917aad..64fc6d87d8 100644
--- a/tools/bbh_shootout.cpp
+++ b/tools/bbh_shootout.cpp
@@ -5,7 +5,7 @@
* found in the LICENSE file.
*/
-#include "BenchTimer.h"
+#include "Timer.h"
#include "Benchmark.h"
#include "LazyDecodeBitmap.h"
#include "PictureBenchmark.h"
@@ -64,7 +64,7 @@ static void do_benchmark_work(sk_tools::PictureRenderer* renderer,
BBoxType bBoxType,
SkPicture* pic,
const int numRepeats,
- BenchTimer* timer) {
+ Timer* timer) {
renderer->setBBoxHierarchyType(bBoxType);
renderer->setGridSize(FLAGS_tilesize, FLAGS_tilesize);
renderer->init(pic, NULL, NULL, NULL, false);
@@ -106,14 +106,14 @@ int tool_main(int argc, char** argv) {
if (!includeBBoxType[bBoxType]) { continue; }
if (FLAGS_playback > 0) {
sk_tools::TiledPictureRenderer playbackRenderer;
- BenchTimer playbackTimer;
+ Timer playbackTimer;
do_benchmark_work(&playbackRenderer, (BBoxType)bBoxType,
picture, FLAGS_playback, &playbackTimer);
measurement.fPlaybackAverage[bBoxType] = playbackTimer.fCpu;
}
if (FLAGS_record > 0) {
sk_tools::RecordPictureRenderer recordRenderer;
- BenchTimer recordTimer;
+ Timer recordTimer;
do_benchmark_work(&recordRenderer, (BBoxType)bBoxType,
picture, FLAGS_record, &recordTimer);
measurement.fRecordAverage[bBoxType] = recordTimer.fCpu;
diff --git a/tools/bench_pictures_main.cpp b/tools/bench_pictures_main.cpp
index d9b767b2aa..503269af6a 100644
--- a/tools/bench_pictures_main.cpp
+++ b/tools/bench_pictures_main.cpp
@@ -6,7 +6,7 @@
*/
#include "BenchLogger.h"
-#include "BenchTimer.h"
+#include "Timer.h"
#include "CopyTilesRenderer.h"
#include "CrashHandler.h"
#include "LazyDecodeBitmap.h"
diff --git a/tools/bench_playback.cpp b/tools/bench_playback.cpp
index 26fa1c7ee8..6ebe19d36f 100644
--- a/tools/bench_playback.cpp
+++ b/tools/bench_playback.cpp
@@ -16,10 +16,8 @@
#include "../include/record/SkRecording.h"
-#include "BenchTimer.h"
#include "Stats.h"
-
-typedef WallTimer Timer;
+#include "Timer.h"
__SK_FORCE_IMAGE_DECODER_LINKING;
@@ -78,15 +76,16 @@ static void bench(SkPMColor* scratch, SkPicture& src, const char* name) {
// Draw once to warm any caches. The first sample otherwise can be very noisy.
draw(*record, *picture, canvas.get());
- Timer timer;
+ WallTimer timer;
+ const double scale = timescale();
SkAutoTMalloc<double> samples(FLAGS_samples);
for (int i = 0; i < FLAGS_samples; i++) {
// We assume timer overhead (typically, ~30ns) is insignificant
// compared to draw runtime (at least ~100us, usually several ms).
- timer.start(timescale());
+ timer.start();
draw(*record, *picture, canvas.get());
timer.end();
- samples[i] = timer.fWall;
+ samples[i] = timer.fWall * scale;
}
Stats stats(samples.get(), FLAGS_samples);
diff --git a/tools/bench_record.cpp b/tools/bench_record.cpp
index 0024c2ccdb..545731900b 100644
--- a/tools/bench_record.cpp
+++ b/tools/bench_record.cpp
@@ -14,11 +14,9 @@
#include "SkStream.h"
#include "SkString.h"
-#include "BenchTimer.h"
#include "LazyDecodeBitmap.h"
#include "Stats.h"
-
-typedef WallTimer Timer;
+#include "Timer.h"
__SK_FORCE_IMAGE_DECODER_LINKING;
@@ -81,12 +79,13 @@ static void bench_record(const SkPicture& src,
rerecord(src, bbhFactory);
// Rerecord once to see how many times we should loop to make timer overhead insignificant.
- Timer timer;
+ WallTimer timer;
+ const double scale = timescale();
do {
- timer.start(timescale());
+ timer.start();
rerecord(src, bbhFactory);
timer.end();
- } while (timer.fWall < timerOverhead); // Loop just in case something bizarre happens.
+ } while (timer.fWall * scale < timerOverhead); // Loop just in case something bizarre happens.
// We want (timer overhead / measurement) to be less than FLAGS_overheadGoal.
// So in each sample, we'll loop enough times to have made that true for our first measurement.
@@ -94,12 +93,12 @@ static void bench_record(const SkPicture& src,
SkAutoTMalloc<double> samples(FLAGS_samples);
for (int i = 0; i < FLAGS_samples; i++) {
- timer.start(timescale());
+ timer.start();
for (int j = 0; j < loops; j++) {
rerecord(src, bbhFactory);
}
timer.end();
- samples[i] = timer.fWall / loops;
+ samples[i] = timer.fWall * scale / loops;
}
Stats stats(samples.get(), FLAGS_samples);
@@ -132,12 +131,13 @@ int tool_main(int argc, char** argv) {
// Each run will use this timer overhead estimate to guess how many times it should run.
static const int kOverheadLoops = 10000000;
- Timer timer;
+ WallTimer timer;
double overheadEstimate = 0.0;
+ const double scale = timescale();
for (int i = 0; i < kOverheadLoops; i++) {
- timer.start(timescale());
+ timer.start();
timer.end();
- overheadEstimate += timer.fWall;
+ overheadEstimate += timer.fWall * scale;
}
overheadEstimate /= kOverheadLoops;
diff --git a/tools/skpdiff/skpdiff_util.cpp b/tools/skpdiff/skpdiff_util.cpp
index 171721c3be..983bee20b3 100644
--- a/tools/skpdiff/skpdiff_util.cpp
+++ b/tools/skpdiff/skpdiff_util.cpp
@@ -83,7 +83,7 @@ const char* cl_error_to_string(cl_int err) {
}
#endif
-// TODO refactor BenchTimer to be used here
+// TODO refactor Timer to be used here
double get_seconds() {
#if SK_BUILD_FOR_WIN32
LARGE_INTEGER currentTime;
diff --git a/bench/BenchGpuTimer_gl.cpp b/tools/timer/GpuTimer.cpp
index 349fc1529d..aac10a3b07 100644
--- a/bench/BenchGpuTimer_gl.cpp
+++ b/tools/timer/GpuTimer.cpp
@@ -5,34 +5,37 @@
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
-#include "BenchGpuTimer_gl.h"
+#include "GpuTimer.h"
#include "gl/SkGLContextHelper.h"
#include "gl/GrGLUtil.h"
-BenchGpuTimer::BenchGpuTimer(const SkGLContextHelper* glctx) {
- fContext = glctx;
- glctx->ref();
- glctx->makeCurrent();
- fStarted = false;
- fSupported = GrGLGetVersion(glctx->gl()) > GR_GL_VER(3,3) ||
- glctx->hasExtension("GL_ARB_timer_query") ||
- glctx->hasExtension("GL_EXT_timer_query");
+GpuTimer::GpuTimer(const SkGLContextHelper* glctx) : fContext(glctx) {
+ if (fContext) {
+ fContext->ref();
+ fContext->makeCurrent();
+ fStarted = false;
+ fSupported = GrGLGetVersion(fContext->gl()) > GR_GL_VER(3,3) ||
+ fContext->hasExtension("GL_ARB_timer_query") ||
+ fContext->hasExtension("GL_EXT_timer_query");
- if (fSupported) {
- SK_GL(*glctx, GenQueries(1, &fQuery));
+ if (fSupported) {
+ SK_GL(*fContext, GenQueries(1, &fQuery));
+ }
}
}
-BenchGpuTimer::~BenchGpuTimer() {
- if (fSupported) {
- fContext->makeCurrent();
- SK_GL(*fContext, DeleteQueries(1, &fQuery));
+GpuTimer::~GpuTimer() {
+ if (fContext) {
+ if (fSupported) {
+ fContext->makeCurrent();
+ SK_GL(*fContext, DeleteQueries(1, &fQuery));
+ }
+ fContext->unref();
}
- fContext->unref();
}
-void BenchGpuTimer::startGpu() {
- if (fSupported) {
+void GpuTimer::start() {
+ if (fContext && fSupported) {
fContext->makeCurrent();
fStarted = true;
SK_GL(*fContext, BeginQuery(GR_GL_TIME_ELAPSED, fQuery));
@@ -43,8 +46,8 @@ void BenchGpuTimer::startGpu() {
* It is important to stop the cpu clocks first,
* as this will cpu wait for the gpu to finish.
*/
-double BenchGpuTimer::endGpu() {
- if (fSupported) {
+double GpuTimer::end() {
+ if (fContext && fSupported) {
fStarted = false;
fContext->makeCurrent();
SK_GL(*fContext, EndQuery(GR_GL_TIME_ELAPSED));
@@ -52,8 +55,8 @@ double BenchGpuTimer::endGpu() {
GrGLint available = 0;
while (!available) {
SK_GL_NOERRCHECK(*fContext, GetQueryObjectiv(fQuery,
- GR_GL_QUERY_RESULT_AVAILABLE,
- &available));
+ GR_GL_QUERY_RESULT_AVAILABLE,
+ &available));
// If GetQueryObjectiv is erroring out we need some alternative
// means of breaking out of this loop
GrGLenum error;
diff --git a/bench/BenchGpuTimer_gl.h b/tools/timer/GpuTimer.h
index e472a4c514..2100312a21 100644
--- a/bench/BenchGpuTimer_gl.h
+++ b/tools/timer/GpuTimer.h
@@ -1,21 +1,20 @@
-
/*
* 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 SkBenchGpuTimer_DEFINED
-#define SkBenchGpuTimer_DEFINED
+#ifndef GpuTimer_DEFINED
+#define GpuTimer_DEFINED
class SkGLContextHelper;
-class BenchGpuTimer {
+class GpuTimer {
public:
- BenchGpuTimer(const SkGLContextHelper* glctx);
- ~BenchGpuTimer();
- void startGpu();
- double endGpu();
+ GpuTimer(const SkGLContextHelper*);
+ ~GpuTimer();
+ void start();
+ double end();
private:
unsigned fQuery;
int fStarted;
diff --git a/bench/BenchSysTimer_mach.cpp b/tools/timer/SysTimer_mach.cpp
index 1f0a6b9861..aca12dee52 100644
--- a/bench/BenchSysTimer_mach.cpp
+++ b/tools/timer/SysTimer_mach.cpp
@@ -1,17 +1,12 @@
-
/*
* 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 "BenchSysTimer_mach.h"
-
-//Time
-#include <mach/mach.h>
-#include <mach/mach_time.h>
+#include "SysTimer_mach.h"
-static time_value_t macCpuTime() {
+static time_value_t mac_cpu_time() {
mach_port_t task = mach_task_self();
if (task == MACH_PORT_NULL) {
time_value_t none = {0, 0};
@@ -21,10 +16,9 @@ static time_value_t macCpuTime() {
task_thread_times_info thread_info_data;
mach_msg_type_number_t thread_info_count = TASK_THREAD_TIMES_INFO_COUNT;
if (KERN_SUCCESS != task_info(task,
- TASK_THREAD_TIMES_INFO,
- reinterpret_cast<task_info_t>(&thread_info_data),
- &thread_info_count))
- {
+ TASK_THREAD_TIMES_INFO,
+ reinterpret_cast<task_info_t>(&thread_info_data),
+ &thread_info_count)) {
time_value_t none = {0, 0};
return none;
}
@@ -33,44 +27,40 @@ static time_value_t macCpuTime() {
return thread_info_data.user_time;
}
-static double intervalInMSec(const time_value_t start_clock
- , const time_value_t end_clock)
-{
+static double interval_in_ms(time_value_t start_clock, time_value_t end_clock) {
double duration_clock;
if ((end_clock.microseconds - start_clock.microseconds) < 0) {
- duration_clock = (end_clock.seconds - start_clock.seconds-1)*1000;
- duration_clock += (1000000
- + end_clock.microseconds
- - start_clock.microseconds) / 1000.0;
+ duration_clock = (end_clock.seconds - start_clock.seconds-1) * 1000;
+ duration_clock += (1000000 + end_clock.microseconds - start_clock.microseconds) / 1000.0;
} else {
- duration_clock = (end_clock.seconds - start_clock.seconds)*1000;
- duration_clock += (end_clock.microseconds - start_clock.microseconds)
- / 1000.0;
+ duration_clock = (end_clock.seconds - start_clock.seconds) * 1000;
+ duration_clock += (end_clock.microseconds - start_clock.microseconds) / 1000.0;
}
return duration_clock;
}
-void BenchSysTimer::startWall() {
- this->fStartWall = mach_absolute_time();
+void SysTimer::startWall() {
+ fStartWall = mach_absolute_time();
}
-void BenchSysTimer::startCpu() {
- this->fStartCpu = macCpuTime();
+
+void SysTimer::startCpu() {
+ fStartCpu = mac_cpu_time();
}
-double BenchSysTimer::endCpu() {
- time_value_t end_cpu = macCpuTime();
- return intervalInMSec(this->fStartCpu, end_cpu);
+double SysTimer::endCpu() {
+ time_value_t end_cpu = mac_cpu_time();
+ return interval_in_ms(fStartCpu, end_cpu);
}
-double BenchSysTimer::endWall() {
+
+double SysTimer::endWall() {
uint64_t end_wall = mach_absolute_time();
- uint64_t elapsed = end_wall - this->fStartWall;
+ uint64_t elapsed = end_wall - fStartWall;
mach_timebase_info_data_t sTimebaseInfo;
if (KERN_SUCCESS != mach_timebase_info(&sTimebaseInfo)) {
return 0;
} else {
- uint64_t elapsedNano = elapsed * sTimebaseInfo.numer
- / sTimebaseInfo.denom;
+ uint64_t elapsedNano = elapsed * sTimebaseInfo.numer / sTimebaseInfo.denom;
return elapsedNano / 1000000.0;
}
}
diff --git a/bench/BenchSysTimer_mach.h b/tools/timer/SysTimer_mach.h
index 44d0e5eb49..8c21d57b36 100644
--- a/bench/BenchSysTimer_mach.h
+++ b/tools/timer/SysTimer_mach.h
@@ -1,18 +1,16 @@
-
/*
* 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 SkBenchSysTimer_DEFINED
-#define SkBenchSysTimer_DEFINED
+#ifndef SysTimer_DEFINED
+#define SysTimer_DEFINED
-//Time
#include <mach/mach.h>
#include <mach/mach_time.h>
-class BenchSysTimer {
+class SysTimer {
public:
void startWall();
void startCpu();
diff --git a/bench/BenchSysTimer_posix.cpp b/tools/timer/SysTimer_posix.cpp
index e6767e5af2..4b7d708aab 100644
--- a/bench/BenchSysTimer_posix.cpp
+++ b/tools/timer/SysTimer_posix.cpp
@@ -1,57 +1,51 @@
-
/*
* 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 "BenchSysTimer_posix.h"
-
-//Time
-#include <time.h>
+#include "SysTimer_posix.h"
-static double intervalInMSec(const timespec start_clock
- , const timespec end_clock)
+static double interval_in_ms(timespec start_clock, timespec end_clock)
{
double duration_clock;
if ((end_clock.tv_nsec - start_clock.tv_nsec) < 0) {
- duration_clock = (end_clock.tv_sec - start_clock.tv_sec-1)*1000;
- duration_clock += (1000000000 + end_clock.tv_nsec - start_clock.tv_nsec)
- / 1000000.0;
+ duration_clock = (end_clock.tv_sec - start_clock.tv_sec - 1) * 1000;
+ duration_clock += (1000000000 + end_clock.tv_nsec - start_clock.tv_nsec) / 1000000.0;
} else {
- duration_clock = (end_clock.tv_sec - start_clock.tv_sec)*1000;
+ duration_clock = (end_clock.tv_sec - start_clock.tv_sec) * 1000;
duration_clock += (end_clock.tv_nsec - start_clock.tv_nsec) / 1000000.0;
}
return duration_clock;
}
-void BenchSysTimer::startWall() {
- if (-1 == clock_gettime(CLOCK_MONOTONIC, &this->fWall)) {
+void SysTimer::startWall() {
+ if (-1 == clock_gettime(CLOCK_MONOTONIC, &fWall)) {
timespec none = {0, 0};
- this->fWall = none;
+ fWall = none;
}
}
-void BenchSysTimer::startCpu() {
- if (-1 == clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &this->fCpu)) {
+void SysTimer::startCpu() {
+ if (-1 == clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &fCpu)) {
timespec none = {0, 0};
- this->fCpu = none;
+ fCpu = none;
}
}
-double BenchSysTimer::endCpu() {
+double SysTimer::endCpu() {
timespec end_cpu;
if (-1 == clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end_cpu)) {
timespec none = {0, 0};
end_cpu = none;
}
- return intervalInMSec(this->fCpu, end_cpu);
+ return interval_in_ms(fCpu, end_cpu);
}
-double BenchSysTimer::endWall() {
+double SysTimer::endWall() {
timespec end_wall;
if (-1 == clock_gettime(CLOCK_MONOTONIC, &end_wall)) {
timespec none = {0, 0};
end_wall = none;
}
- return intervalInMSec(this->fWall, end_wall);
+ return interval_in_ms(fWall, end_wall);
}
diff --git a/bench/BenchSysTimer_posix.h b/tools/timer/SysTimer_posix.h
index 8fd97061b6..1eca909e26 100644
--- a/bench/BenchSysTimer_posix.h
+++ b/tools/timer/SysTimer_posix.h
@@ -1,17 +1,15 @@
-
/*
* 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 SkBenchSysTimer_DEFINED
-#define SkBenchSysTimer_DEFINED
+#ifndef SysTimer_DEFINED
+#define SysTimer_DEFINED
-//Time
#include <time.h>
-class BenchSysTimer {
+class SysTimer {
public:
void startWall();
void startCpu();
diff --git a/bench/BenchSysTimer_windows.cpp b/tools/timer/SysTimer_windows.cpp
index fab657a8c3..2f9d0a5d58 100644
--- a/bench/BenchSysTimer_windows.cpp
+++ b/tools/timer/SysTimer_windows.cpp
@@ -1,25 +1,17 @@
-
/*
* 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 "BenchSysTimer_windows.h"
-
-//Time
-#define WIN32_LEAN_AND_MEAN 1
-#include <windows.h>
+#include "SysTimer_windows.h"
-static ULONGLONG winCpuTime() {
+static ULONGLONG win_cpu_time() {
FILETIME createTime;
FILETIME exitTime;
FILETIME usrTime;
FILETIME sysTime;
- if (0 == GetProcessTimes(GetCurrentProcess()
- , &createTime, &exitTime
- , &sysTime, &usrTime))
- {
+ if (0 == GetProcessTimes(GetCurrentProcess(), &createTime, &exitTime, &sysTime, &usrTime)) {
return 0;
}
ULARGE_INTEGER start_cpu_sys;
@@ -31,27 +23,27 @@ static ULONGLONG winCpuTime() {
return start_cpu_sys.QuadPart + start_cpu_usr.QuadPart;
}
-void BenchSysTimer::startWall() {
- if (0 == ::QueryPerformanceCounter(&this->fStartWall)) {
- this->fStartWall.QuadPart = 0;
+void SysTimer::startWall() {
+ if (0 == ::QueryPerformanceCounter(&fStartWall)) {
+ fStartWall.QuadPart = 0;
}
}
-void BenchSysTimer::startCpu() {
- this->fStartCpu = winCpuTime();
+void SysTimer::startCpu() {
+ fStartCpu = win_cpu_time();
}
-double BenchSysTimer::endCpu() {
- ULONGLONG end_cpu = winCpuTime();
- return static_cast<double>((end_cpu - this->fStartCpu)) / 10000.0L;
+double SysTimer::endCpu() {
+ ULONGLONG end_cpu = win_cpu_time();
+ return static_cast<double>(end_cpu - fStartCpu) / 10000.0L;
}
-double BenchSysTimer::endWall() {
+double SysTimer::endWall() {
LARGE_INTEGER end_wall;
if (0 == ::QueryPerformanceCounter(&end_wall)) {
end_wall.QuadPart = 0;
}
LARGE_INTEGER ticks_elapsed;
- ticks_elapsed.QuadPart = end_wall.QuadPart - this->fStartWall.QuadPart;
+ ticks_elapsed.QuadPart = end_wall.QuadPart - fStartWall.QuadPart;
LARGE_INTEGER frequency;
if (0 == ::QueryPerformanceFrequency(&frequency)) {
diff --git a/bench/BenchSysTimer_windows.h b/tools/timer/SysTimer_windows.h
index 469332e4ed..62a9445134 100644
--- a/bench/BenchSysTimer_windows.h
+++ b/tools/timer/SysTimer_windows.h
@@ -1,18 +1,17 @@
-
/*
* 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 SkBenchSysTimer_DEFINED
-#define SkBenchSysTimer_DEFINED
+#ifndef SysTimer_DEFINED
+#define SysTimer_DEFINED
//Time
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
-class BenchSysTimer {
+class SysTimer {
public:
void startWall();
void startCpu();
diff --git a/tools/timer/Timer.cpp b/tools/timer/Timer.cpp
new file mode 100644
index 0000000000..4f3fc85cff
--- /dev/null
+++ b/tools/timer/Timer.cpp
@@ -0,0 +1,53 @@
+/*
+ * 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 "Timer.h"
+
+Timer::Timer(SkGLContextHelper* gl)
+ : fCpu(-1.0)
+ , fWall(-1.0)
+ , fTruncatedCpu(-1.0)
+ , fTruncatedWall(-1.0)
+ , fGpu(-1.0)
+#if SK_SUPPORT_GPU
+ , fGpuTimer(gl)
+#endif
+ {}
+
+void Timer::start() {
+ fSysTimer.startWall();
+ fTruncatedSysTimer.startWall();
+#if SK_SUPPORT_GPU
+ fGpuTimer.start();
+#endif
+ fSysTimer.startCpu();
+ fTruncatedSysTimer.startCpu();
+}
+
+void Timer::end() {
+ fCpu = fSysTimer.endCpu();
+#if SK_SUPPORT_GPU
+ //It is important to stop the cpu clocks first,
+ //as the following will cpu wait for the gpu to finish.
+ fGpu = fGpuTimer.end();
+#endif
+ fWall = fSysTimer.endWall();
+}
+
+void Timer::truncatedEnd() {
+ fTruncatedCpu = fTruncatedSysTimer.endCpu();
+ fTruncatedWall = fTruncatedSysTimer.endWall();
+}
+
+WallTimer::WallTimer() : fWall(-1.0) {}
+
+void WallTimer::start() {
+ fSysTimer.startWall();
+}
+
+void WallTimer::end() {
+ fWall = fSysTimer.endWall();
+}
diff --git a/bench/BenchTimer.h b/tools/timer/Timer.h
index 2abf10b80f..15c93f5603 100644
--- a/bench/BenchTimer.h
+++ b/tools/timer/Timer.h
@@ -1,18 +1,25 @@
-
/*
* 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
+#ifndef Timer_DEFINED
+#define Timer_DEFINED
-#include <SkTypes.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
-class BenchSysTimer;
-class BenchGpuTimer;
+#if SK_SUPPORT_GPU
+ #include "GpuTimer.h"
+#endif
class SkGLContextHelper;
@@ -25,13 +32,15 @@ class SkGLContextHelper;
* times and (for GPU configurations) can be used to roughly (very
* roughly) gauge the GPU load/backlog.
*/
-class BenchTimer {
+class Timer {
public:
- BenchTimer(SkGLContextHelper* gl = NULL);
- ~BenchTimer();
- void start(double durationScale = 1);
- void end();
+ explicit Timer(SkGLContextHelper* gl = NULL);
+
+ void start();
void truncatedEnd();
+ void end();
+
+ // All times in milliseconds.
double fCpu;
double fWall;
double fTruncatedCpu;
@@ -39,29 +48,26 @@ public:
double fGpu;
private:
- BenchSysTimer* fSysTimer;
- BenchSysTimer* fTruncatedSysTimer;
+ SysTimer fSysTimer;
+ SysTimer fTruncatedSysTimer;
#if SK_SUPPORT_GPU
- BenchGpuTimer* fGpuTimer;
+ GpuTimer 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.)
+// Same as Timer above, supporting only fWall but with much lower overhead.
+// (Typically, ~30ns instead of Timer's ~1us.)
class WallTimer {
public:
WallTimer();
- ~WallTimer();
- void start(double durationScale = 1);
+ void start();
void end();
- double fWall;
+ double fWall; // Milliseconds.
private:
- BenchSysTimer* fSysTimer;
- double fDurationScale;
+ SysTimer fSysTimer;
};
#endif
diff --git a/bench/TimerData.cpp b/tools/timer/TimerData.cpp
index 0cb000280b..21529bc2e0 100644
--- a/bench/TimerData.cpp
+++ b/tools/timer/TimerData.cpp
@@ -1,4 +1,3 @@
-
/*
* Copyright 2012 Google Inc.
*
@@ -7,22 +6,19 @@
*/
#include "TimerData.h"
-#include "BenchTimer.h"
+#include "Timer.h"
#include <limits>
-using namespace std;
-
TimerData::TimerData(int maxNumTimings)
-: fMaxNumTimings(maxNumTimings)
-, fCurrTiming(0)
-, fWallTimes(maxNumTimings)
-, fTruncatedWallTimes(maxNumTimings)
-, fCpuTimes(maxNumTimings)
-, fTruncatedCpuTimes(maxNumTimings)
-, fGpuTimes(maxNumTimings){
-}
-
-bool TimerData::appendTimes(BenchTimer* timer) {
+ : fMaxNumTimings(maxNumTimings)
+ , fCurrTiming(0)
+ , fWallTimes(maxNumTimings)
+ , fTruncatedWallTimes(maxNumTimings)
+ , fCpuTimes(maxNumTimings)
+ , fTruncatedCpuTimes(maxNumTimings)
+ , fGpuTimes(maxNumTimings) {}
+
+bool TimerData::appendTimes(Timer* timer) {
SkASSERT(timer != NULL);
if (fCurrTiming >= fMaxNumTimings) {
return false;
diff --git a/bench/TimerData.h b/tools/timer/TimerData.h
index fb84df1a9e..35e94dca1d 100644
--- a/bench/TimerData.h
+++ b/tools/timer/TimerData.h
@@ -1,4 +1,3 @@
-
/*
* Copyright 2012 Google Inc.
*
@@ -23,7 +22,7 @@
#pragma warning(pop)
#endif
-class BenchTimer;
+class Timer;
class TimerData {
public:
@@ -33,12 +32,12 @@ public:
explicit TimerData(int maxNumTimings);
/**
- * Collect times from the BenchTimer for an iteration. It will fail if called more often than
+ * Collect times from the Timer for an iteration. It will fail if called more often than
* indicated in the constructor.
*
- * @param BenchTimer Must not be null.
+ * @param Timer Must not be null.
*/
- bool appendTimes(BenchTimer*);
+ bool appendTimes(Timer*);
enum Result {
kMin_Result,