| Index: src/gpu/GrLayerCache.cpp
 | 
| diff --git a/src/gpu/GrLayerCache.cpp b/src/gpu/GrLayerCache.cpp
 | 
| index 6b176753987c6634830a2b20ee55dc7c6c9029a3..5374d115ca56d2c7168d45055a2ca974a9df64f0 100644
 | 
| --- a/src/gpu/GrLayerCache.cpp
 | 
| +++ b/src/gpu/GrLayerCache.cpp
 | 
| @@ -13,7 +13,6 @@
 | 
|  #ifdef SK_DEBUG
 | 
|  void GrCachedLayer::validate(const GrTexture* backingTexture) const {
 | 
|      SkASSERT(SK_InvalidGenID != fKey.pictureID());
 | 
| -    SkASSERT(fKey.start() >= 0);
 | 
|  
 | 
|      if (fTexture) {
 | 
|          // If the layer is in some texture then it must occupy some rectangle
 | 
| @@ -125,32 +124,35 @@ void GrLayerCache::freeAll() {
 | 
|  GrCachedLayer* GrLayerCache::createLayer(uint32_t pictureID,
 | 
|                                           int start, int stop,
 | 
|                                           const SkIRect& bounds,
 | 
| -                                         const SkMatrix& ctm,
 | 
| +                                         const SkMatrix& initialMat,
 | 
| +                                         const int* key,
 | 
| +                                         int keySize,
 | 
|                                           const SkPaint* paint) {
 | 
|      SkASSERT(pictureID != SK_InvalidGenID && start >= 0 && stop > 0);
 | 
|  
 | 
| -    GrCachedLayer* layer = SkNEW_ARGS(GrCachedLayer, (pictureID, start, stop, bounds, ctm, paint));
 | 
| +    GrCachedLayer* layer = SkNEW_ARGS(GrCachedLayer, (pictureID, start, stop, bounds, initialMat,
 | 
| +                                                      key, keySize, paint));
 | 
|      fLayerHash.add(layer);
 | 
|      return layer;
 | 
|  }
 | 
|  
 | 
| -GrCachedLayer* GrLayerCache::findLayer(uint32_t pictureID,
 | 
| -                                       int start,
 | 
| -                                       const SkIRect& bounds,
 | 
| -                                       const SkMatrix& ctm) {
 | 
| -    SkASSERT(pictureID != SK_InvalidGenID && start > 0);
 | 
| -    return fLayerHash.find(GrCachedLayer::Key(pictureID, start, bounds, ctm));
 | 
| +GrCachedLayer* GrLayerCache::findLayer(uint32_t pictureID, const SkMatrix& initialMat,
 | 
| +                                       const int* key, int keySize) {
 | 
| +    SkASSERT(pictureID != SK_InvalidGenID);
 | 
| +    return fLayerHash.find(GrCachedLayer::Key(pictureID, initialMat, key, keySize));
 | 
|  }
 | 
|  
 | 
|  GrCachedLayer* GrLayerCache::findLayerOrCreate(uint32_t pictureID,
 | 
|                                                 int start, int stop,
 | 
|                                                 const SkIRect& bounds,
 | 
| -                                               const SkMatrix& ctm,
 | 
| +                                               const SkMatrix& initialMat,
 | 
| +                                               const int* key,
 | 
| +                                               int keySize,
 | 
|                                                 const SkPaint* paint) {
 | 
|      SkASSERT(pictureID != SK_InvalidGenID && start >= 0 && stop > 0);
 | 
| -    GrCachedLayer* layer = fLayerHash.find(GrCachedLayer::Key(pictureID, start, bounds, ctm));
 | 
| +    GrCachedLayer* layer = fLayerHash.find(GrCachedLayer::Key(pictureID, initialMat, key, keySize));
 | 
|      if (NULL == layer) {
 | 
| -        layer = this->createLayer(pictureID, start, stop, bounds, ctm, paint);
 | 
| +        layer = this->createLayer(pictureID, start, stop, bounds, initialMat, key, keySize, paint);
 | 
|      }
 | 
|  
 | 
|      return layer;
 | 
| @@ -485,7 +487,11 @@ void GrLayerCache::writeLayersToDisk(const SkString& dirName) {
 | 
|          }
 | 
|  
 | 
|          SkString fileName(dirName);
 | 
| -        fileName.appendf("\\%d-%d.png", layer->fKey.pictureID(), layer->fKey.start());
 | 
| +        fileName.appendf("\\%d", layer->fKey.pictureID());
 | 
| +        for (int i = 0; i < layer->fKey.keySize(); ++i) {
 | 
| +            fileName.appendf("-%d", layer->fKey.key()[i]);
 | 
| +        }
 | 
| +        fileName.appendf(".png");
 | 
|  
 | 
|          layer->texture()->surfacePriv().savePixels(fileName.c_str());
 | 
|      }
 | 
| 
 |