SkPDF: properly dedup bitmaps in shaders

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

Review URL: https://codereview.chromium.org/1848383002
diff --git a/src/pdf/SkPDFShader.cpp b/src/pdf/SkPDFShader.cpp
index abcae7b..c30d8a4 100644
--- a/src/pdf/SkPDFShader.cpp
+++ b/src/pdf/SkPDFShader.cpp
@@ -430,7 +430,7 @@
     SkIRect fBBox;
 
     SkBitmap fImage;
-    uint32_t fPixelGeneration;
+    SkBitmapKey fBitmapKey;
     SkShader::TileMode fImageTileModes[2];
 
     State(SkShader* shader, const SkMatrix& canvasTransform,
@@ -1052,8 +1052,8 @@
     }
 
     if (fType == SkShader::kNone_GradientType) {
-        if (fPixelGeneration != b.fPixelGeneration ||
-                fPixelGeneration == 0 ||
+        if (fBitmapKey != b.fBitmapKey ||
+                fBitmapKey.id() == 0 ||
                 fImageTileModes[0] != b.fImageTileModes[0] ||
                 fImageTileModes[1] != b.fImageTileModes[1]) {
             return false;
@@ -1099,8 +1099,7 @@
 SkPDFShader::State::State(SkShader* shader, const SkMatrix& canvasTransform,
                           const SkIRect& bbox, SkScalar rasterScale)
         : fCanvasTransform(canvasTransform),
-          fBBox(bbox),
-          fPixelGeneration(0) {
+          fBBox(bbox) {
     fInfo.fColorCount = 0;
     fInfo.fColors = nullptr;
     fInfo.fColorOffsets = nullptr;
@@ -1154,7 +1153,7 @@
             fShaderTransform.setTranslate(shaderRect.x(), shaderRect.y());
             fShaderTransform.preScale(1 / scale.width(), 1 / scale.height());
         }
-        fPixelGeneration = fImage.getGenerationID();
+        fBitmapKey = SkBitmapKey(fImage);
     } else {
         AllocateGradientInfoStorage();
         shader->asAGradient(&fInfo);