SkPDF/Device/ImageFilter: Fix ImageFilter fallback code

Broken in https://chromium.googlesource.com/skia/+/76033be

I have confirmed that this fixes 470083.

BUG=470083

Review URL: https://codereview.chromium.org/1080923004

[cherry-picked from  commit 00b7e5e]
NOTREECHECKS=true
NOTRY=true
R=reed@google.com

Review URL: https://codereview.chromium.org/1167023003
diff --git a/include/core/SkDevice.h b/include/core/SkDevice.h
index 99c29ee..ec57711 100644
--- a/include/core/SkDevice.h
+++ b/include/core/SkDevice.h
@@ -330,15 +330,19 @@
         static SkPixelGeometry AdjustGeometry(const SkImageInfo&, TileUsage, SkPixelGeometry);
 
         // The constructor may change the pixel geometry based on other parameters.
-        CreateInfo(const SkImageInfo& info, TileUsage tileUsage, SkPixelGeometry geo)
+        CreateInfo(const SkImageInfo& info,
+                   TileUsage tileUsage,
+                   SkPixelGeometry geo,
+                   bool forImageFilter = false)
             : fInfo(info)
             , fTileUsage(tileUsage)
             , fPixelGeometry(AdjustGeometry(info, tileUsage, geo))
-        {}
+            , fForImageFilter(forImageFilter) {}
 
         const SkImageInfo       fInfo;
         const TileUsage         fTileUsage;
         const SkPixelGeometry   fPixelGeometry;
+        const bool              fForImageFilter;
     };
 
     /**
diff --git a/src/core/SkDeviceImageFilterProxy.h b/src/core/SkDeviceImageFilterProxy.h
index aa2fd1a..eecb09d 100644
--- a/src/core/SkDeviceImageFilterProxy.h
+++ b/src/core/SkDeviceImageFilterProxy.h
@@ -22,7 +22,8 @@
     SkBaseDevice* createDevice(int w, int h) override {
         SkBaseDevice::CreateInfo cinfo(SkImageInfo::MakeN32Premul(w, h),
                                        SkBaseDevice::kPossible_TileUsage,
-                                       kUnknown_SkPixelGeometry);
+                                       kUnknown_SkPixelGeometry,
+                                       true /*forImageFilter*/);
         return fDevice->onCreateDevice(cinfo, NULL);
     }
     bool canHandleImageFilter(const SkImageFilter* filter) override {
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index ced075e..3a0d63c 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -577,7 +577,8 @@
 }
 
 SkBaseDevice* SkPDFDevice::onCreateDevice(const CreateInfo& cinfo, const SkPaint* layerPaint) {
-    if (layerPaint && not_supported_for_layers(*layerPaint)) {
+    if (cinfo.fForImageFilter ||
+        (layerPaint && not_supported_for_layers(*layerPaint))) {
         return SkBitmapDevice::Create(cinfo.fInfo);
     }
     SkISize size = SkISize::Make(cinfo.fInfo.width(), cinfo.fInfo.height());