add gm/bench for runtime colorfilter

Change-Id: I236f729d6cf5812eff9ca75b055b827b3d782f9b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/210061
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
diff --git a/gm/runtimecolorfilter.cpp b/gm/runtimecolorfilter.cpp
index a15dcc9..a6c1335 100644
--- a/gm/runtimecolorfilter.cpp
+++ b/gm/runtimecolorfilter.cpp
@@ -77,3 +77,50 @@
         canvas->drawImage(img, 512, 0, &p);
     }
 }
+
+// These need to be static for some dm caching tests in DM...
+static SkRuntimeColorFilterFactory gInterp =
+    SkRuntimeColorFilterFactory(SkString(SKSL_TEST_SRC), nullptr);
+static SkRuntimeColorFilterFactory gCpuProc =
+    SkRuntimeColorFilterFactory(SkString(SKSL_TEST_SRC), runtimeCpuFunc);
+
+class RuntimeCF : public skiagm::GM {
+public:
+    RuntimeCF(bool useCpuProc) : fFact(useCpuProc ? gCpuProc : gInterp) {
+        fName.printf("runtime_cf_interp_%d", !useCpuProc);
+    }
+
+protected:
+    bool runAsBench() const override { return true; }
+
+    SkString onShortName() override {
+        return fName;
+    }
+
+    SkISize onISize() override {
+        return SkISize::Make(512, 256);
+    }
+
+    void onOnceBeforeDraw() override {
+        fImg = GetResourceAsImage("images/mandrill_256.png")->makeRasterImage();
+    }
+
+    void onDraw(SkCanvas* canvas) override {
+        canvas->drawImage(fImg, 0, 0, nullptr);
+
+        float b = 0.75;
+        sk_sp<SkData> data = SkData::MakeWithCopy(&b, sizeof(b));
+        auto cf1 = fFact.make(data);
+        SkPaint p;
+        p.setColorFilter(cf1);
+        canvas->drawImage(fImg, 256, 0, &p);
+    }
+private:
+    sk_sp<SkImage> fImg;
+    SkRuntimeColorFilterFactory fFact;
+    SkString fName;
+
+    typedef skiagm::GM INHERITED;
+};
+DEF_GM(return new RuntimeCF(false);)
+//DEF_GM(return new RuntimeCF(true);)