diff options
author | joshualitt <joshualitt@chromium.org> | 2015-09-24 12:42:02 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-24 12:42:02 -0700 |
commit | 8db65a6d0c60d0e31eadc64d427f6e7f050e1140 (patch) | |
tree | e6d090fa3eae94e918ec7a18022064a4c66d241a /tools | |
parent | 89438a1dcec1b4ccebc1c2a20e348d14b8b6ff0d (diff) |
stop scaling loops and improve warmup bench
BUG=skia:
Review URL: https://codereview.chromium.org/1363663004
Diffstat (limited to 'tools')
-rw-r--r-- | tools/VisualBench/VisualLightweightBenchModule.cpp | 21 | ||||
-rw-r--r-- | tools/VisualBench/VisualLightweightBenchModule.h | 1 |
2 files changed, 13 insertions, 9 deletions
diff --git a/tools/VisualBench/VisualLightweightBenchModule.cpp b/tools/VisualBench/VisualLightweightBenchModule.cpp index 6f21c68041..d5e4e5b8b6 100644 --- a/tools/VisualBench/VisualLightweightBenchModule.cpp +++ b/tools/VisualBench/VisualLightweightBenchModule.cpp @@ -47,16 +47,26 @@ static SkString humanize(double ms) { #define HUMANIZE(time) humanize(time).c_str() -// A trivial bench to warm up the gpu +// We draw a big nonAA path to warmup the gpu / cpu class WarmupBench : public Benchmark { public: + WarmupBench() { + make_path(fPath); + } private: + static void make_path(SkPath& path) { + #include "BigPathBench.inc" + } const char* onGetName() override { return "warmupbench"; } void onDraw(const int loops, SkCanvas* canvas) override { + SkPaint paint; + paint.setStyle(SkPaint::kStroke_Style); + paint.setStrokeWidth(2); for (int i = 0; i < loops; i++) { - sk_tool_utils::draw_checkerboard(canvas, 0xffffffff, 0xffc6c3c6, 10); + canvas->drawPath(fPath, paint); } } + SkPath fPath; }; VisualLightweightBenchModule::VisualLightweightBenchModule(VisualBench* owner) @@ -143,6 +153,7 @@ void VisualLightweightBenchModule::printStats() { bool VisualLightweightBenchModule::advanceRecordIfNecessary(SkCanvas* canvas) { if (!fBenchmark && fState == kWarmup_State) { + fOwner->clear(canvas, SK_ColorWHITE, 2); fBenchmark.reset(new WarmupBench); return true; } @@ -259,11 +270,6 @@ void VisualLightweightBenchModule::resetTimingState() { fOwner->reset(); } -void VisualLightweightBenchModule::scaleLoops(double elapsedMs) { - // Scale back the number of loops - fLoops = (int)ceil(fLoops * FLAGS_loopMs / elapsedMs); -} - inline void VisualLightweightBenchModule::tuneLoops() { if (1 << 30 == fLoops) { // We're about to wrap. Something's wrong with the bench. @@ -272,7 +278,6 @@ inline void VisualLightweightBenchModule::tuneLoops() { } else { double elapsedMs = this->elapsed(); if (elapsedMs > FLAGS_loopMs) { - this->scaleLoops(elapsedMs); this->nextState(kPreWarmTimingPerCanvasPreDraw_State); } else { fLoops *= 2; diff --git a/tools/VisualBench/VisualLightweightBenchModule.h b/tools/VisualBench/VisualLightweightBenchModule.h index 0eb024b181..1a30875c61 100644 --- a/tools/VisualBench/VisualLightweightBenchModule.h +++ b/tools/VisualBench/VisualLightweightBenchModule.h @@ -71,7 +71,6 @@ private: inline void nextState(State); void perCanvasPreDraw(SkCanvas*, State); void preWarm(State nextState); - void scaleLoops(double elapsedMs); inline void tuneLoops(); inline void timing(SkCanvas*); inline double elapsed(); |