| Index: src/gpu/GrLayerHoister.cpp | 
| diff --git a/src/gpu/GrLayerHoister.cpp b/src/gpu/GrLayerHoister.cpp | 
| index 4c5b5a06e514759fdd0345efec7d09b5c2c4c936..2dfefcd3feea6d06a05191134b15db3ec6f49162 100644 | 
| --- a/src/gpu/GrLayerHoister.cpp | 
| +++ b/src/gpu/GrLayerHoister.cpp | 
| @@ -13,13 +13,9 @@ | 
|  | 
| // Return true if any layers are suitable for hoisting | 
| bool GrLayerHoister::FindLayersToHoist(const GrAccelData *gpuData, | 
| -                                       const SkPicture::OperationList* ops, | 
| const SkRect& query, | 
| bool pullForward[]) { | 
| bool anyHoisted = false; | 
| -    for (int i = 0; i < gpuData->numSaveLayers(); ++i) { | 
| -        pullForward[i] = false; | 
| -    } | 
|  | 
| // Layer hoisting pre-renders the entire layer since it will be cached and potentially | 
| // reused with different clips (e.g., in different tiles). Because of this the | 
| @@ -27,67 +23,32 @@ bool GrLayerHoister::FindLayersToHoist(const GrAccelData *gpuData, | 
| // is used to limit which clips are pre-rendered. | 
| static const int kSaveLayerMaxSize = 256; | 
|  | 
| -    if (NULL != ops) { | 
| -        // In this case the picture has been generated with a BBH so we use | 
| -        // the BBH to limit the pre-rendering to just the layers needed to cover | 
| -        // the region being drawn | 
| -        for (int i = 0; i < ops->numOps(); ++i) { | 
| -            uint32_t offset = ops->offset(i); | 
| - | 
| -            // For now we're saving all the layers in the GrAccelData so they | 
| -            // can be nested. Additionally, the nested layers appear before | 
| -            // their parent in the list. | 
| -            for (int j = 0; j < gpuData->numSaveLayers(); ++j) { | 
| -                const GrAccelData::SaveLayerInfo& info = gpuData->saveLayerInfo(j); | 
| - | 
| -                if (pullForward[j]) { | 
| -                    continue;            // already pulling forward | 
| -                } | 
| - | 
| -                if (offset < info.fSaveLayerOpID || offset > info.fRestoreOpID) { | 
| -                    continue;            // the op isn't in this range | 
| -                } | 
| - | 
| -                // TODO: once this code is more stable unsuitable layers can | 
| -                // just be omitted during the optimization stage | 
| -                if (!info.fValid || | 
| -                    kSaveLayerMaxSize < info.fSize.fWidth || | 
| -                    kSaveLayerMaxSize < info.fSize.fHeight || | 
| -                    info.fIsNested) { | 
| -                    continue;            // this layer is unsuitable | 
| -                } | 
| - | 
| -                pullForward[j] = true; | 
| -                anyHoisted = true; | 
| -            } | 
| +    // Pre-render all the layers that intersect the query rect | 
| +    for (int i = 0; i < gpuData->numSaveLayers(); ++i) { | 
| +        pullForward[i] = false; | 
| + | 
| +        const GrAccelData::SaveLayerInfo& info = gpuData->saveLayerInfo(i); | 
| + | 
| +        SkRect layerRect = SkRect::MakeXYWH(SkIntToScalar(info.fOffset.fX), | 
| +                                            SkIntToScalar(info.fOffset.fY), | 
| +                                            SkIntToScalar(info.fSize.fWidth), | 
| +                                            SkIntToScalar(info.fSize.fHeight)); | 
| + | 
| +        if (!SkRect::Intersects(query, layerRect)) { | 
| +            continue; | 
| } | 
| -    } else { | 
| -        // In this case there is no BBH associated with the picture. Pre-render | 
| -        // all the layers that intersect the drawn region | 
| -        for (int j = 0; j < gpuData->numSaveLayers(); ++j) { | 
| -            const GrAccelData::SaveLayerInfo& info = gpuData->saveLayerInfo(j); | 
| - | 
| -            SkRect layerRect = SkRect::MakeXYWH(SkIntToScalar(info.fOffset.fX), | 
| -                                                SkIntToScalar(info.fOffset.fY), | 
| -                                                SkIntToScalar(info.fSize.fWidth), | 
| -                                                SkIntToScalar(info.fSize.fHeight)); | 
| - | 
| -            if (!SkRect::Intersects(query, layerRect)) { | 
| -                continue; | 
| -            } | 
| - | 
| -            // TODO: once this code is more stable unsuitable layers can | 
| -            // just be omitted during the optimization stage | 
| -            if (!info.fValid || | 
| -                kSaveLayerMaxSize < info.fSize.fWidth || | 
| -                kSaveLayerMaxSize < info.fSize.fHeight || | 
| -                info.fIsNested) { | 
| -                continue; | 
| -            } | 
| - | 
| -            pullForward[j] = true; | 
| -            anyHoisted = true; | 
| + | 
| +        // TODO: once this code is more stable unsuitable layers can | 
| +        // just be omitted during the optimization stage | 
| +        if (!info.fValid || | 
| +            kSaveLayerMaxSize < info.fSize.fWidth || | 
| +            kSaveLayerMaxSize < info.fSize.fHeight || | 
| +            info.fIsNested) { | 
| +            continue; | 
| } | 
| + | 
| +        pullForward[i] = true; | 
| +        anyHoisted = true; | 
| } | 
|  | 
| return anyHoisted; | 
|  |