Split up monolithic EXPERIMENTAL_drawPicture method

This is prep for the new multi-picture API.

This is split out of (Add new API to allow layer hoisting/atlasing across picture piles - https://codereview.chromium.org/474623002/)

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/489103002
diff --git a/include/gpu/SkGpuDevice.h b/include/gpu/SkGpuDevice.h
index b856d66..75e7eb5 100644
--- a/include/gpu/SkGpuDevice.h
+++ b/include/gpu/SkGpuDevice.h
@@ -21,6 +21,8 @@
 struct SkDrawProcs;
 struct GrSkDrawProcs;
 
+class GrAccelData;
+struct GrCachedLayer;
 class GrTextContext;
 
 /**
@@ -140,6 +142,15 @@
     virtual bool onReadPixels(const SkImageInfo&, void*, size_t, int, int) SK_OVERRIDE;
     virtual bool onWritePixels(const SkImageInfo&, const void*, size_t, int, int) SK_OVERRIDE;
 
+    static bool FindLayersToHoist(const GrAccelData *gpuData,
+                                  const SkPicture::OperationList* ops,
+                                  const SkIRect& query,
+                                  bool* pullForward);
+    void drawLayers(const SkPicture* picture,
+                    const SkTDArray<GrCachedLayer*>& atlased,
+                    const SkTDArray<GrCachedLayer*>& nonAtlased);
+    void unlockLayers(const SkPicture* picture);
+
     /**  PRIVATE / EXPERIMENTAL -- do not call */
     virtual void EXPERIMENTAL_optimize(const SkPicture* picture) SK_OVERRIDE;
     /**  PRIVATE / EXPERIMENTAL -- do not call */