| Index: src/gpu/GrDrawTarget.cpp
 | 
| diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp
 | 
| index 549ab374c8f71940f77b5a003a69b575b14c4972..7565cd1df865aaeca1ce55d479de2a3ef8b449e1 100644
 | 
| --- a/src/gpu/GrDrawTarget.cpp
 | 
| +++ b/src/gpu/GrDrawTarget.cpp
 | 
| @@ -100,13 +100,10 @@ bool GrDrawTarget::setupDstReadIfNecessary(const GrPipelineBuilder& pipelineBuil
 | 
|          return false;
 | 
|      }
 | 
|      SkIPoint dstPoint = {0, 0};
 | 
| -    if (this->copySurface(copy, rt, copyRect, dstPoint)) {
 | 
| -        dstCopy->setTexture(copy);
 | 
| -        dstCopy->setOffset(copyRect.fLeft, copyRect.fTop);
 | 
| -        return true;
 | 
| -    } else {
 | 
| -        return false;
 | 
| -    }
 | 
| +    this->copySurface(copy, rt, copyRect, dstPoint);
 | 
| +    dstCopy->setTexture(copy);
 | 
| +    dstCopy->setOffset(copyRect.fLeft, copyRect.fTop);
 | 
| +    return true;
 | 
|  }
 | 
|  
 | 
|  void GrDrawTarget::flush() {
 | 
| @@ -421,7 +418,7 @@ bool clip_srcrect_and_dstpoint(const GrSurface* dst,
 | 
|  }
 | 
|  }
 | 
|  
 | 
| -bool GrDrawTarget::copySurface(GrSurface* dst,
 | 
| +void GrDrawTarget::copySurface(GrSurface* dst,
 | 
|                                 GrSurface* src,
 | 
|                                 const SkIRect& srcRect,
 | 
|                                 const SkIPoint& dstPoint) {
 | 
| @@ -437,56 +434,10 @@ bool GrDrawTarget::copySurface(GrSurface* dst,
 | 
|                                     dstPoint,
 | 
|                                     &clippedSrcRect,
 | 
|                                     &clippedDstPoint)) {
 | 
| -        return true;
 | 
| -    }
 | 
| -
 | 
| -    if (this->getGpu()->canCopySurface(dst, src, clippedSrcRect, clippedDstPoint)) {
 | 
| -        this->onCopySurface(dst, src, clippedSrcRect, clippedDstPoint);
 | 
| -        return true;
 | 
| -    }
 | 
| -
 | 
| -    GrRenderTarget* rt = dst->asRenderTarget();
 | 
| -    GrTexture* tex = src->asTexture();
 | 
| -
 | 
| -    if ((dst == src) || !rt || !tex) {
 | 
| -        return false;
 | 
| +        return;
 | 
|      }
 | 
|  
 | 
| -    GrPipelineBuilder pipelineBuilder;
 | 
| -    pipelineBuilder.setRenderTarget(rt);
 | 
| -    SkMatrix matrix;
 | 
| -    matrix.setTranslate(SkIntToScalar(clippedSrcRect.fLeft - clippedDstPoint.fX),
 | 
| -                        SkIntToScalar(clippedSrcRect.fTop - clippedDstPoint.fY));
 | 
| -    matrix.postIDiv(tex->width(), tex->height());
 | 
| -    pipelineBuilder.addColorTextureProcessor(tex, matrix);
 | 
| -    SkIRect dstRect = SkIRect::MakeXYWH(clippedDstPoint.fX,
 | 
| -                                        clippedDstPoint.fY,
 | 
| -                                        clippedSrcRect.width(),
 | 
| -                                        clippedSrcRect.height());
 | 
| -    this->drawSimpleRect(&pipelineBuilder, GrColor_WHITE, SkMatrix::I(), dstRect);
 | 
| -    return true;
 | 
| -}
 | 
| -
 | 
| -bool GrDrawTarget::canCopySurface(const GrSurface* dst,
 | 
| -                                  const GrSurface* src,
 | 
| -                                  const SkIRect& srcRect,
 | 
| -                                  const SkIPoint& dstPoint) {
 | 
| -    SkASSERT(dst);
 | 
| -    SkASSERT(src);
 | 
| -
 | 
| -    SkIRect clippedSrcRect;
 | 
| -    SkIPoint clippedDstPoint;
 | 
| -    // If the rect is outside the src or dst then we're guaranteed success
 | 
| -    if (!clip_srcrect_and_dstpoint(dst,
 | 
| -                                   src,
 | 
| -                                   srcRect,
 | 
| -                                   dstPoint,
 | 
| -                                   &clippedSrcRect,
 | 
| -                                   &clippedDstPoint)) {
 | 
| -        return true;
 | 
| -    }
 | 
| -    return ((dst != src) && dst->asRenderTarget() && src->asTexture()) ||
 | 
| -           this->getGpu()->canCopySurface(dst, src, clippedSrcRect, clippedDstPoint);
 | 
| +    this->onCopySurface(dst, src, clippedSrcRect, clippedDstPoint);
 | 
|  }
 | 
|  
 | 
|  void GrDrawTarget::setupPipeline(const PipelineInfo& pipelineInfo,
 | 
| 
 |