Try out scalar picture sizes

This paves the way for removing the 'fTile' parameter from SkPictureShader (although that should be a different CL). If we like this we could also move to providing an entire cull SkRect.

R=reed@google.com, mtklein@google.com, fmalita@google.com, fmalita@chromium.org

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/513983002
diff --git a/src/gpu/GrPictureUtils.cpp b/src/gpu/GrPictureUtils.cpp
index 521160a..4b0f77f 100644
--- a/src/gpu/GrPictureUtils.cpp
+++ b/src/gpu/GrPictureUtils.cpp
@@ -23,10 +23,11 @@
     CollectLayers(const SkPicture* pict, GrAccelData* accelData)
         : fPictureID(pict->uniqueID())
         , fCTM(&SkMatrix::I())
-        , fCurrentClipBounds(SkIRect::MakeXYWH(0, 0, pict->width(), pict->height()))
         , fSaveLayersInStack(0)
         , fAccelData(accelData) {
 
+        pict->cullRect().roundOut(&fCurrentClipBounds);
+
         if (NULL == pict->fRecord.get()) {
             return;
         }
@@ -255,7 +256,7 @@
 // GPUOptimize is only intended to be called within the context of SkGpuDevice's
 // EXPERIMENTAL_optimize method.
 const GrAccelData* GPUOptimize(const SkPicture* pict) {
-    if (NULL == pict || 0 == pict->width() || 0 == pict->height()) {
+    if (NULL == pict || pict->cullRect().isEmpty()) {
         return NULL;
     }