Index: tools/VisualBench/VisualLightweightBenchModule.cpp |
diff --git a/tools/VisualBench/VisualLightweightBenchModule.cpp b/tools/VisualBench/VisualLightweightBenchModule.cpp |
index 6f21c6804152a7928c32d9e7702d1d99528e747b..d5e4e5b8b632eac99cde888cd17f7781808771f8 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; |