aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar joshualitt <joshualitt@chromium.org>2015-09-24 12:42:02 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-09-24 12:42:02 -0700
commit8db65a6d0c60d0e31eadc64d427f6e7f050e1140 (patch)
treee6d090fa3eae94e918ec7a18022064a4c66d241a /tools
parent89438a1dcec1b4ccebc1c2a20e348d14b8b6ff0d (diff)
stop scaling loops and improve warmup bench
Diffstat (limited to 'tools')
-rw-r--r--tools/VisualBench/VisualLightweightBenchModule.cpp21
-rw-r--r--tools/VisualBench/VisualLightweightBenchModule.h1
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();