diff --git a/gm/factory.cpp b/gm/factory.cpp
index a7356a9..6734235 100644
--- a/gm/factory.cpp
+++ b/gm/factory.cpp
@@ -57,6 +57,11 @@
         canvas->drawBitmap(fBitmap, 0, 0);
     }
 
+    // Skip cross process pipe due to https://code.google.com/p/skia/issues/detail?id=1520
+    virtual uint32_t onGetFlags() const {
+        return INHERITED::onGetFlags() | kSkipPipeCrossProcess_Flag;
+    }
+
 private:
     SkBitmap fBitmap;
 
diff --git a/gm/gm.h b/gm/gm.h
index bb263c7..f806973 100644
--- a/gm/gm.h
+++ b/gm/gm.h
@@ -34,13 +34,14 @@
         virtual ~GM();
 
         enum Flags {
-            kSkipPDF_Flag           = 1 << 0,
-            kSkipPicture_Flag       = 1 << 1,
-            kSkipPipe_Flag          = 1 << 2,
-            kSkipTiled_Flag         = 1 << 3,
-            kSkip565_Flag           = 1 << 4,
-            kSkipScaledReplay_Flag  = 1 << 5,
-            kSkipGPU_Flag           = 1 << 6,
+            kSkipPDF_Flag               = 1 << 0,
+            kSkipPicture_Flag           = 1 << 1,
+            kSkipPipe_Flag              = 1 << 2,
+            kSkipPipeCrossProcess_Flag  = 1 << 3,
+            kSkipTiled_Flag             = 1 << 4,
+            kSkip565_Flag               = 1 << 5,
+            kSkipScaledReplay_Flag      = 1 << 6,
+            kSkipGPU_Flag               = 1 << 7,
         };
 
         void draw(SkCanvas*);
diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp
index a4ddbce..773e1e7 100644
--- a/gm/gmmain.cpp
+++ b/gm/gmmain.cpp
@@ -1014,11 +1014,24 @@
         return pict;
     }
 
+    static SkData* bitmap_encoder(size_t* pixelRefOffset, const SkBitmap& bm) {
+        SkPixelRef* pr = bm.pixelRef();
+        if (pr != NULL) {
+            SkData* data = pr->refEncodedData();
+            if (data != NULL) {
+                *pixelRefOffset = bm.pixelRefOffset();
+                return data;
+            }
+        }
+        return NULL;
+    }
+
     static SkPicture* stream_to_new_picture(const SkPicture& src) {
         SkDynamicMemoryWStream storage;
-        src.serialize(&storage);
+        src.serialize(&storage, &bitmap_encoder);
         SkAutoTUnref<SkStreamAsset> pictReadback(storage.detachAsStream());
-        SkPicture* retval = SkPicture::CreateFromStream(pictReadback);
+        SkPicture* retval = SkPicture::CreateFromStream(pictReadback,
+                                                        &SkImageDecoder::DecodeMemory);
         return retval;
     }
 
@@ -1108,7 +1121,9 @@
             SkString renderModeDescriptor("-pipe");
             renderModeDescriptor.append(gPipeWritingFlagCombos[i].name);
 
-            if (gm->getFlags() & GM::kSkipPipe_Flag) {
+            if (gm->getFlags() & GM::kSkipPipe_Flag
+                || (gPipeWritingFlagCombos[i].flags == SkGPipeWriter::kCrossProcess_Flag
+                    && gm->getFlags() & GM::kSkipPipeCrossProcess_Flag)) {
                 RecordTestResults(kIntentionallySkipped_ErrorType, shortNamePlusConfig,
                                   renderModeDescriptor.c_str());
                 errors.add(kIntentionallySkipped_ErrorType);
