| Index: src/gpu/GrBlurUtils.cpp
 | 
| diff --git a/src/gpu/GrBlurUtils.cpp b/src/gpu/GrBlurUtils.cpp
 | 
| index 58d12af1788e63f204bea8f8add07b9e3d3955ef..ca83c582c35487cc43a6616a771f11684a7954e6 100644
 | 
| --- a/src/gpu/GrBlurUtils.cpp
 | 
| +++ b/src/gpu/GrBlurUtils.cpp
 | 
| @@ -13,6 +13,7 @@
 | 
|  #include "effects/GrSimpleTextureEffect.h"
 | 
|  #include "GrStyle.h"
 | 
|  #include "GrTexture.h"
 | 
| +#include "GrTextureProxy.h"
 | 
|  #include "GrTextureProvider.h"
 | 
|  #include "SkDraw.h"
 | 
|  #include "SkGrPriv.h"
 | 
| @@ -32,7 +33,7 @@ static bool draw_mask(GrRenderTargetContext* renderTargetContext,
 | 
|                        const SkMatrix& viewMatrix,
 | 
|                        const SkIRect& maskRect,
 | 
|                        GrPaint* grp,
 | 
| -                      GrTexture* mask) {
 | 
| +                      GrTextureProxy* mask) {
 | 
|      SkMatrix matrix;
 | 
|      matrix.setTranslate(-SkIntToScalar(maskRect.fLeft), -SkIntToScalar(maskRect.fTop));
 | 
|      matrix.postIDiv(mask->width(), mask->height());
 | 
| @@ -88,16 +89,17 @@ static bool sw_draw_with_mask_filter(GrRenderTargetContext* renderTargetContext,
 | 
|      texture->writePixels(0, 0, desc.fWidth, desc.fHeight, desc.fConfig,
 | 
|                                 dstM.fImage, dstM.fRowBytes);
 | 
|  
 | 
| -    return draw_mask(renderTargetContext, clipData, viewMatrix, dstM.fBounds, grp, texture.get());
 | 
| +    sk_sp<GrTextureProxy> proxy(GrTextureProxy::Make(texture));
 | 
| +    return draw_mask(renderTargetContext, clipData, viewMatrix, dstM.fBounds, grp, proxy.get());
 | 
|  }
 | 
|  
 | 
|  // Create a mask of 'devPath' and place the result in 'mask'.
 | 
| -static sk_sp<GrTexture> create_mask_GPU(GrContext* context,
 | 
| -                                        const SkIRect& maskRect,
 | 
| -                                        const SkPath& devPath,
 | 
| -                                        SkStrokeRec::InitStyle fillOrHairline,
 | 
| -                                        bool doAA,
 | 
| -                                        int sampleCnt) {
 | 
| +static sk_sp<GrTextureProxy> create_mask_GPU(GrContext* context,
 | 
| +                                             const SkIRect& maskRect,
 | 
| +                                             const SkPath& devPath,
 | 
| +                                             SkStrokeRec::InitStyle fillOrHairline,
 | 
| +                                             bool doAA,
 | 
| +                                             int sampleCnt) {
 | 
|      if (!doAA) {
 | 
|          // Don't need MSAA if mask isn't AA
 | 
|          sampleCnt = 0;
 | 
| @@ -125,7 +127,7 @@ static sk_sp<GrTexture> create_mask_GPU(GrContext* context,
 | 
|      SkMatrix translate;
 | 
|      translate.setTranslate(-SkIntToScalar(maskRect.fLeft), -SkIntToScalar(maskRect.fTop));
 | 
|      renderTargetContext->drawPath(clip, tempPaint, translate, devPath, GrStyle(fillOrHairline));
 | 
| -    return renderTargetContext->asTexture();;
 | 
| +    return sk_ref_sp(renderTargetContext->asDeferredTexture());
 | 
|  }
 | 
|  
 | 
|  static void draw_path_with_mask_filter(GrContext* context,
 | 
| @@ -204,18 +206,18 @@ static void draw_path_with_mask_filter(GrContext* context,
 | 
|              return;
 | 
|          }
 | 
|  
 | 
| -        sk_sp<GrTexture> mask(create_mask_GPU(context,
 | 
| -                                              finalIRect,
 | 
| -                                              *path,
 | 
| -                                              fillOrHairline,
 | 
| -                                              paint->isAntiAlias(),
 | 
| -                                              renderTargetContext->numColorSamples()));
 | 
| +        sk_sp<GrTextureProxy> mask(create_mask_GPU(context,
 | 
| +                                                   finalIRect,
 | 
| +                                                   *path,
 | 
| +                                                   fillOrHairline,
 | 
| +                                                   paint->isAntiAlias(),
 | 
| +                                                   renderTargetContext->numColorSamples()));
 | 
|          if (mask) {
 | 
| -            GrTexture* filtered;
 | 
| +            GrTextureProxy* filtered;
 | 
|  
 | 
|              if (maskFilter->filterMaskGPU(mask.get(), viewMatrix, finalIRect, &filtered)) {
 | 
|                  // filterMaskGPU gives us ownership of a ref to the result
 | 
| -                sk_sp<GrTexture> atu(filtered);
 | 
| +                sk_sp<GrTextureProxy> atu(filtered);
 | 
|                  if (draw_mask(renderTargetContext, clip, viewMatrix, finalIRect, paint, filtered)) {
 | 
|                      // This path is completely drawn
 | 
|                      return;
 | 
| 
 |