Create GLSLUniformHandler class for gpu backend
[platform/upstream/libSkiaSharp.git] / bench / CoverageBench.cpp
1 /*
2  * Copyright 2013 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7
8 #include "Benchmark.h"
9 #include "SkBitmap.h"
10 #include "SkCanvas.h"
11 #include "SkColorPriv.h"
12 #include "SkDraw.h"
13 #include "SkMatrix.h"
14 #include "SkPath.h"
15 #include "SkRasterClip.h"
16
17 class DrawPathBench : public Benchmark {
18     SkPaint     fPaint;
19     SkString    fName;
20     SkPath      fPath;
21     SkRasterClip fRC;
22     SkAutoPixmapStorage fPixmap;
23     SkMatrix    fIdentity;
24     SkDraw      fDraw;
25     bool        fDrawCoverage;
26 public:
27     DrawPathBench(bool drawCoverage) : fDrawCoverage(drawCoverage) {
28         fPaint.setAntiAlias(true);
29         fName.printf("draw_coverage_%s", drawCoverage ? "true" : "false");
30
31         fPath.moveTo(0, 0);
32         fPath.quadTo(500, 0, 500, 500);
33         fPath.quadTo(250, 0, 0, 500);
34
35         fPixmap.alloc(SkImageInfo::MakeA8(500, 500));
36
37         fIdentity.setIdentity();
38         fRC.setRect(fPath.getBounds().round());
39
40         fDraw.fDst      = fPixmap;
41         fDraw.fMatrix   = &fIdentity;
42         fDraw.fClip     = &fRC.bwRgn();
43         fDraw.fRC       = &fRC;
44     }
45
46 protected:
47     const char* onGetName() override {
48         return fName.c_str();
49     }
50
51     void onDraw(int loops, SkCanvas* canvas) override {
52         if (fDrawCoverage) {
53             for (int i = 0; i < loops; ++i) {
54                 fDraw.drawPathCoverage(fPath, fPaint);
55             }
56         } else {
57             for (int i = 0; i < loops; ++i) {
58                 fDraw.drawPath(fPath, fPaint);
59             }
60         }
61     }
62
63 private:
64     typedef Benchmark INHERITED;
65 };
66
67 ///////////////////////////////////////////////////////////////////////////////
68
69 DEF_BENCH( return new DrawPathBench(false) )
70 DEF_BENCH( return new DrawPathBench(true) )