| Index: src/gpu/GrLayerHoister.cpp
|
| diff --git a/src/gpu/GrLayerHoister.cpp b/src/gpu/GrLayerHoister.cpp
|
| index b7653ee295705fd2be324fde08a23dc016caf7ae..4e7836830ca784d723a3ce2a9d63c298614baa58 100644
|
| --- a/src/gpu/GrLayerHoister.cpp
|
| +++ b/src/gpu/GrLayerHoister.cpp
|
| @@ -19,7 +19,7 @@
|
| // required texture/render target resources.
|
| static void prepare_for_hoisting(GrLayerCache* layerCache,
|
| const SkPicture* topLevelPicture,
|
| - const SkMatrix& matrix,
|
| + const SkMatrix& initialMat,
|
| const SkLayerInfo::BlockInfo& info,
|
| const SkIRect& layerRect,
|
| SkTDArray<GrHoistedLayer>* needRendering,
|
| @@ -28,15 +28,13 @@ static void prepare_for_hoisting(GrLayerCache* layerCache,
|
| int numSamples) {
|
| const SkPicture* pict = info.fPicture ? info.fPicture : topLevelPicture;
|
|
|
| - SkMatrix combined = matrix;
|
| - combined.preConcat(info.fPreMat);
|
| - combined.preConcat(info.fLocalMat);
|
| -
|
| - GrCachedLayer* layer = layerCache->findLayerOrCreate(pict->uniqueID(),
|
| + GrCachedLayer* layer = layerCache->findLayerOrCreate(topLevelPicture->uniqueID(),
|
| info.fSaveLayerOpID,
|
| info.fRestoreOpID,
|
| layerRect,
|
| - combined,
|
| + initialMat,
|
| + info.fKey,
|
| + info.fKeySize,
|
| info.fPaint);
|
| GrSurfaceDesc desc;
|
| desc.fFlags = kRenderTarget_GrSurfaceFlag;
|
| @@ -76,7 +74,8 @@ static void prepare_for_hoisting(GrLayerCache* layerCache,
|
| hl->fPicture = pict;
|
| hl->fOffset = SkIPoint::Make(layerRect.fLeft, layerRect.fTop);
|
| hl->fLocalMat = info.fLocalMat;
|
| - hl->fPreMat = matrix;
|
| + hl->fInitialMat = initialMat;
|
| + hl->fPreMat = initialMat;
|
| hl->fPreMat.preConcat(info.fPreMat);
|
| }
|
|
|
| @@ -192,19 +191,17 @@ static void wrap_texture(GrTexture* texture, int width, int height, SkBitmap* re
|
| result->setPixelRef(SkNEW_ARGS(SkGrPixelRef, (info, texture)))->unref();
|
| }
|
|
|
| -void GrLayerHoister::ConvertLayersToReplacements(const SkTDArray<GrHoistedLayer>& layers,
|
| +void GrLayerHoister::ConvertLayersToReplacements(const SkPicture* topLevelPicture,
|
| + const SkTDArray<GrHoistedLayer>& layers,
|
| GrReplacements* replacements) {
|
| // TODO: just replace GrReplacements::ReplacementInfo with GrCachedLayer?
|
| for (int i = 0; i < layers.count(); ++i) {
|
| GrCachedLayer* layer = layers[i].fLayer;
|
| - const SkPicture* picture = layers[i].fPicture;
|
| -
|
| - SkMatrix combined = SkMatrix::Concat(layers[i].fPreMat, layers[i].fLocalMat);
|
|
|
| GrReplacements::ReplacementInfo* layerInfo =
|
| - replacements->newReplacement(picture->uniqueID(),
|
| - layer->start(),
|
| - combined);
|
| + replacements->newReplacement(topLevelPicture->uniqueID(),
|
| + layers[i].fInitialMat,
|
| + layer->key(), layer->keySize());
|
| layerInfo->fStop = layer->stop();
|
| layerInfo->fPos = layers[i].fOffset;
|
|
|
|
|