aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/drawregion.cpp
diff options
context:
space:
mode:
authorGravatar msarett <msarett@google.com>2016-08-25 13:54:30 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-08-25 13:54:30 -0700
commit44df651ebefc284acc2f66425dff3ea0b0e14b36 (patch)
tree324bcf1b278ed44e168f0a6c548fd9a194014b6c /gm/drawregion.cpp
parent4d866dfc46bc381da1761d05ce8b5a3bb0cd7f00 (diff)
Add drawRegion() API to SkCanvas
This will allow us to optimize for the RectGrid macrobench. Currently, SkiaGL is much slower than OpenGL. SkiaGL 12 items/s OpenGL 160 items/s This contains everything except for the fast implementation on GPU. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2277053002 Review-Url: https://codereview.chromium.org/2277053002
Diffstat (limited to 'gm/drawregion.cpp')
-rw-r--r--gm/drawregion.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/gm/drawregion.cpp b/gm/drawregion.cpp
new file mode 100644
index 0000000000..1e9d6c55e2
--- /dev/null
+++ b/gm/drawregion.cpp
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "gm.h"
+#include "SkCanvas.h"
+
+/**
+ * This is very similar to the RectGrid macrobench in Android.
+ */
+class DrawRegionGM : public skiagm::GM {
+public:
+ DrawRegionGM() {}
+
+protected:
+ SkString onShortName() override {
+ return SkString("drawregion");
+ }
+
+ SkISize onISize() override {
+ return SkISize::Make(500, 500);
+ }
+
+ bool runAsBench() const override {
+ return true;
+ }
+
+ void onOnceBeforeDraw() override {
+ for (int x = 50; x < 250; x+=2) {
+ for (int y = 50; y < 250; y+=2) {
+ fRegion.op(x, y, x + 1, y + 1, SkRegion::kUnion_Op);
+ }
+ }
+ }
+
+ void onDraw(SkCanvas* canvas) override {
+ SkPaint paint;
+ paint.setStyle(SkPaint::kFill_Style);
+ paint.setColor(0xFFFF00FF);
+ canvas->drawRect(SkRect::MakeLTRB(50.0f, 50.0f, 250.0f, 250.0f), paint);
+
+ paint.setColor(0xFF00FFFF);
+ canvas->drawRegion(fRegion, paint);
+ }
+
+ SkRegion fRegion;
+
+private:
+ typedef skiagm::GM INHERITED;
+};
+DEF_GM( return new DrawRegionGM; )