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);)