Update SkMergeImageFilter to sk_sp

TBR=reed@google.com

GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1847583002

Review URL: https://codereview.chromium.org/1847583002
diff --git a/bench/ImageFilterDAGBench.cpp b/bench/ImageFilterDAGBench.cpp
index d66d287..5fdf95b 100644
--- a/bench/ImageFilterDAGBench.cpp
+++ b/bench/ImageFilterDAGBench.cpp
@@ -11,12 +11,10 @@
 #include "SkCanvas.h"
 #include "SkMergeImageFilter.h"
 
-enum { kNumInputs = 5 };
 
 // Exercise a blur filter connected to 5 inputs of the same merge filter.
 // This bench shows an improvement in performance once cacheing of re-used
 // nodes is implemented, since the DAG is no longer flattened to a tree.
-
 class ImageFilterDAGBench : public Benchmark {
 public:
     ImageFilterDAGBench() {}
@@ -27,21 +25,23 @@
     }
 
     void onDraw(int loops, SkCanvas* canvas) override {
+        const SkRect rect = SkRect::Make(SkIRect::MakeWH(400, 400));
+
         for (int j = 0; j < loops; j++) {
-            SkAutoTUnref<SkImageFilter> blur(SkBlurImageFilter::Create(20.0f, 20.0f));
-            SkImageFilter* inputs[kNumInputs];
+            sk_sp<SkImageFilter> blur(SkBlurImageFilter::Create(20.0f, 20.0f));
+            sk_sp<SkImageFilter> inputs[kNumInputs];
             for (int i = 0; i < kNumInputs; ++i) {
-                inputs[i] = blur.get();
+                inputs[i] = blur;
             }
-            SkAutoTUnref<SkImageFilter> merge(SkMergeImageFilter::Create(inputs, kNumInputs));
             SkPaint paint;
-            paint.setImageFilter(merge);
-            SkRect rect = SkRect::Make(SkIRect::MakeWH(400, 400));
+            paint.setImageFilter(SkMergeImageFilter::Make(inputs, kNumInputs));
             canvas->drawRect(rect, paint);
         }
     }
 
 private:
+    static const int kNumInputs = 5;
+
     typedef Benchmark INHERITED;
 };
 
diff --git a/bench/MergeBench.cpp b/bench/MergeBench.cpp
index e1f7d97..061a4d3 100644
--- a/bench/MergeBench.cpp
+++ b/bench/MergeBench.cpp
@@ -16,6 +16,41 @@
 #define FILTER_WIDTH_LARGE  SkIntToScalar(256)
 #define FILTER_HEIGHT_LARGE SkIntToScalar(256)
 
+static sk_sp<SkImage> make_bitmap() {
+    sk_sp<SkSurface> surface(SkSurface::MakeRasterN32Premul(80, 80));
+    surface->getCanvas()->clear(0x00000000);
+    SkPaint paint;
+    paint.setAntiAlias(true);
+    paint.setColor(0xFF884422);
+    paint.setTextSize(SkIntToScalar(96));
+    const char* str = "g";
+    surface->getCanvas()->drawText(str, strlen(str), 15, 55, paint);
+    return surface->makeImageSnapshot();
+}
+
+static sk_sp<SkImage> make_checkerboard() {
+    sk_sp<SkSurface> surface(SkSurface::MakeRasterN32Premul(80, 80));
+    SkCanvas* canvas = surface->getCanvas();
+    canvas->clear(0x00000000);
+    SkPaint darkPaint;
+    darkPaint.setColor(0xFF804020);
+    SkPaint lightPaint;
+    lightPaint.setColor(0xFF244484);
+    for (int y = 0; y < 80; y += 16) {
+        for (int x = 0; x < 80; x += 16) {
+            canvas->save();
+            canvas->translate(SkIntToScalar(x), SkIntToScalar(y));
+            canvas->drawRect(SkRect::MakeXYWH(0, 0, 8, 8), darkPaint);
+            canvas->drawRect(SkRect::MakeXYWH(8, 0, 8, 8), lightPaint);
+            canvas->drawRect(SkRect::MakeXYWH(0, 8, 8, 8), lightPaint);
+            canvas->drawRect(SkRect::MakeXYWH(8, 8, 8, 8), darkPaint);
+            canvas->restore();
+        }
+    }
+
+    return surface->makeImageSnapshot();
+}
+
 class MergeBench : public Benchmark {
 public:
     MergeBench(bool small) : fIsSmall(small), fInitialized(false) { }
@@ -27,8 +62,8 @@
 
     void onDelayedSetup() override {
         if (!fInitialized) {
-            make_bitmap();
-            make_checkerboard();
+            fImage = make_bitmap();
+            fCheckerboard = make_checkerboard();
             fInitialized = true;
         }
     }
@@ -37,52 +72,17 @@
         SkRect r = fIsSmall ? SkRect::MakeWH(FILTER_WIDTH_SMALL, FILTER_HEIGHT_SMALL) :
                               SkRect::MakeWH(FILTER_WIDTH_LARGE, FILTER_HEIGHT_LARGE);
         SkPaint paint;
-        paint.setImageFilter(mergeBitmaps())->unref();
+        paint.setImageFilter(this->mergeBitmaps());
         for (int i = 0; i < loops; i++) {
             canvas->drawRect(r, paint);
         }
     }
 
 private:
-    SkImageFilter* mergeBitmaps() {
-        SkAutoTUnref<SkImageFilter> first(SkImageSource::Create(fCheckerboard.get()));
-        SkAutoTUnref<SkImageFilter> second(SkImageSource::Create(fImage.get()));
-        return SkMergeImageFilter::Create(first, second);
-    }
-
-    void make_bitmap() {
-        auto surface(SkSurface::MakeRasterN32Premul(80, 80));
-        surface->getCanvas()->clear(0x00000000);
-        SkPaint paint;
-        paint.setAntiAlias(true);
-        paint.setColor(0xFF884422);
-        paint.setTextSize(SkIntToScalar(96));
-        const char* str = "g";
-        surface->getCanvas()->drawText(str, strlen(str), 15, 55, paint);
-        fImage = surface->makeImageSnapshot();
-    }
-
-    void make_checkerboard() {
-        auto surface(SkSurface::MakeRasterN32Premul(80, 80));
-        SkCanvas* canvas = surface->getCanvas();
-        canvas->clear(0x00000000);
-        SkPaint darkPaint;
-        darkPaint.setColor(0xFF804020);
-        SkPaint lightPaint;
-        lightPaint.setColor(0xFF244484);
-        for (int y = 0; y < 80; y += 16) {
-            for (int x = 0; x < 80; x += 16) {
-                canvas->save();
-                canvas->translate(SkIntToScalar(x), SkIntToScalar(y));
-                canvas->drawRect(SkRect::MakeXYWH(0, 0, 8, 8), darkPaint);
-                canvas->drawRect(SkRect::MakeXYWH(8, 0, 8, 8), lightPaint);
-                canvas->drawRect(SkRect::MakeXYWH(0, 8, 8, 8), lightPaint);
-                canvas->drawRect(SkRect::MakeXYWH(8, 8, 8, 8), darkPaint);
-                canvas->restore();
-            }
-        }
-
-        fCheckerboard = surface->makeImageSnapshot();
+    sk_sp<SkImageFilter> mergeBitmaps() {
+        sk_sp<SkImageFilter> first(SkImageSource::Create(fCheckerboard.get()));
+        sk_sp<SkImageFilter> second(SkImageSource::Create(fImage.get()));
+        return SkMergeImageFilter::Make(std::move(first), std::move(second));
     }
 
     bool fIsSmall;