add bench to time relative gain for convexity

Bug: skia:
Change-Id: I5bd0194a49c74a8e47a210ff06ef4406ecb3bc4c
Reviewed-on: https://skia-review.googlesource.com/c/175585
Commit-Queue: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index 6ceb1cf..b065c0c 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -1191,3 +1191,54 @@
 DEF_BENCH( return new ConicBench_asQuadTol() )
 DEF_BENCH( return new ConicBench_quadPow2() )
 */
+
+class CommonConvexBench : public Benchmark {
+protected:
+    SkString    fName;
+    SkPath      fPath;
+    const bool  fAA;
+
+public:
+    CommonConvexBench(int w, int h, bool forceConcave, bool aa) : fAA(aa) {
+        fName.printf("convex_path_%d_%d_%d_%d", w, h, forceConcave, aa);
+
+        SkRect r = SkRect::MakeXYWH(10, 10, w*1.0f, h*1.0f);
+        fPath.addRRect(SkRRect::MakeRectXY(r, w/8.0f, h/8.0f));
+
+        if (forceConcave) {
+            fPath.setConvexity(SkPath::kConcave_Convexity);
+            SkASSERT(!fPath.isConvex());
+        } else {
+            SkASSERT(fPath.isConvex());
+        }
+    }
+
+protected:
+    const char* onGetName() override {
+        return fName.c_str();
+    }
+
+    void onDraw(int loops, SkCanvas* canvas) override {
+        SkPaint paint;
+        paint.setAntiAlias(fAA);
+
+        for (int i = 0; i < loops; ++i) {
+            for (int inner = 0; inner < 100; ++inner) {
+                canvas->drawPath(fPath, paint);
+            }
+        }
+    }
+
+private:
+    typedef Benchmark INHERITED;
+};
+
+DEF_BENCH( return new CommonConvexBench( 16, 16, false, false); )
+DEF_BENCH( return new CommonConvexBench( 16, 16, true,  false); )
+DEF_BENCH( return new CommonConvexBench( 16, 16, false, true); )
+DEF_BENCH( return new CommonConvexBench( 16, 16, true,  true); )
+
+DEF_BENCH( return new CommonConvexBench(200, 16, false, false); )
+DEF_BENCH( return new CommonConvexBench(200, 16, true,  false); )
+DEF_BENCH( return new CommonConvexBench(200, 16, false, true); )
+DEF_BENCH( return new CommonConvexBench(200, 16, true,  true); )