| Index: src/gpu/SkGpuDevice.cpp | 
| diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp | 
| index ab913164eeb9fae15610ea351c3991a1eede7ae5..cb532feb6b586790ca142fc09a56967aa15551da 100644 | 
| --- a/src/gpu/SkGpuDevice.cpp | 
| +++ b/src/gpu/SkGpuDevice.cpp | 
| @@ -198,7 +198,7 @@ SkGpuDevice::SkGpuDevice(GrRenderTarget* rt, int width, int height, | 
| fLegacyBitmap.setInfo(info); | 
| fLegacyBitmap.setPixelRef(pr)->unref(); | 
|  | 
| -    fDrawContext.reset(fContext->drawContext(&this->surfaceProps())); | 
| +    fDrawContext.reset(fContext->drawContext(rt, &this->surfaceProps())); | 
| } | 
|  | 
| GrRenderTarget* SkGpuDevice::CreateRenderTarget(GrContext* context, SkSurface::Budgeted budgeted, | 
| @@ -336,7 +336,7 @@ void SkGpuDevice::clearAll() { | 
| GrColor color = 0; | 
| GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::clearAll", fContext); | 
| SkIRect rect = SkIRect::MakeWH(this->width(), this->height()); | 
| -    fDrawContext->clear(fRenderTarget, &rect, color, true); | 
| +    fDrawContext->clear(&rect, color, true); | 
| fNeedClear = false; | 
| } | 
|  | 
| @@ -375,7 +375,8 @@ void SkGpuDevice::replaceRenderTarget(bool shouldRetainContent) { | 
| SkPixelRef* pr = new SkGrPixelRef(fLegacyBitmap.info(), fRenderTarget); | 
| fLegacyBitmap.setPixelRef(pr)->unref(); | 
|  | 
| -    fDrawContext.reset(fRenderTarget->getContext()->drawContext(&this->surfaceProps())); | 
| +    fDrawContext.reset(fRenderTarget->getContext()->drawContext(fRenderTarget, | 
| +                                                                &this->surfaceProps())); | 
| } | 
|  | 
| /////////////////////////////////////////////////////////////////////////////// | 
| @@ -389,7 +390,7 @@ void SkGpuDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) { | 
| return; | 
| } | 
|  | 
| -    fDrawContext->drawPaint(fRenderTarget, fClip, grPaint, *draw.fMatrix); | 
| +    fDrawContext->drawPaint(fClip, grPaint, *draw.fMatrix); | 
| } | 
|  | 
| // must be in SkCanvas::PointMode order | 
| @@ -441,7 +442,7 @@ void SkGpuDevice::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode, | 
| path.setIsVolatile(true); | 
| path.moveTo(pts[0]); | 
| path.lineTo(pts[1]); | 
| -        fDrawContext->drawPath(fRenderTarget, fClip, grPaint, *draw.fMatrix, path, strokeInfo); | 
| +        fDrawContext->drawPath(fClip, grPaint, *draw.fMatrix, path, strokeInfo); | 
| return; | 
| } | 
|  | 
| @@ -458,8 +459,7 @@ void SkGpuDevice::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode, | 
| return; | 
| } | 
|  | 
| -    fDrawContext->drawVertices(fRenderTarget, | 
| -                               fClip, | 
| +    fDrawContext->drawVertices(fClip, | 
| grPaint, | 
| *draw.fMatrix, | 
| gPointMode2PrimtiveType[mode], | 
| @@ -521,7 +521,7 @@ void SkGpuDevice::drawRect(const SkDraw& draw, const SkRect& rect, | 
| return; | 
| } | 
|  | 
| -    fDrawContext->drawRect(fRenderTarget, fClip, grPaint, *draw.fMatrix, rect, &strokeInfo); | 
| +    fDrawContext->drawRect(fClip, grPaint, *draw.fMatrix, rect, &strokeInfo); | 
| } | 
|  | 
| /////////////////////////////////////////////////////////////////////////////// | 
| @@ -557,7 +557,6 @@ void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect, | 
| } | 
| if (paint.getMaskFilter()->directFilterRRectMaskGPU(fContext->textureProvider(), | 
| fDrawContext, | 
| -                                                                        fRenderTarget, | 
| &grPaint, | 
| fClip, | 
| *draw.fMatrix, | 
| @@ -592,7 +591,7 @@ void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect, | 
| return; | 
| } | 
|  | 
| -    fDrawContext->drawRRect(fRenderTarget, fClip, grPaint, *draw.fMatrix, rect, strokeInfo); | 
| +    fDrawContext->drawRRect(fClip, grPaint, *draw.fMatrix, rect, strokeInfo); | 
| } | 
|  | 
| void SkGpuDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer, | 
| @@ -609,7 +608,7 @@ void SkGpuDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer, | 
| } | 
|  | 
| if (nullptr == paint.getMaskFilter() && nullptr == paint.getPathEffect()) { | 
| -            fDrawContext->drawDRRect(fRenderTarget, fClip, grPaint, *draw.fMatrix, outer, inner); | 
| +            fDrawContext->drawDRRect(fClip, grPaint, *draw.fMatrix, outer, inner); | 
| return; | 
| } | 
| } | 
| @@ -660,7 +659,7 @@ void SkGpuDevice::drawOval(const SkDraw& draw, const SkRect& oval, | 
| return; | 
| } | 
|  | 
| -    fDrawContext->drawOval(fRenderTarget, fClip, grPaint, *draw.fMatrix, oval, strokeInfo); | 
| +    fDrawContext->drawOval(fClip, grPaint, *draw.fMatrix, oval, strokeInfo); | 
| } | 
|  | 
| #include "SkMaskFilter.h" | 
| @@ -1033,7 +1032,7 @@ static void draw_aa_bitmap(GrDrawContext* drawContext, GrContext* context, | 
| dstRect, | 
| devRect)); | 
|  | 
| -    drawContext->drawBatch(renderTarget, clip, grPaint, batch); | 
| +    drawContext->drawBatch(clip, grPaint, batch); | 
| } | 
|  | 
| static bool can_ignore_strict_subset_constraint(const SkBitmap& bitmap, const SkRect& subset) { | 
| @@ -1381,10 +1380,9 @@ void SkGpuDevice::internalDrawBitmap(const SkBitmap& bitmap, | 
| if (kAlpha_8_SkColorType == bitmap.colorType() && paint.getShader()) { | 
| // We don't have local coords in this case and have previously set the transform | 
| // matrices directly on the texture processor. | 
| -        fDrawContext->drawRect(fRenderTarget, fClip, grPaint, viewMatrix, dstRect); | 
| +        fDrawContext->drawRect(fClip, grPaint, viewMatrix, dstRect); | 
| } else { | 
| -        fDrawContext->drawNonAARectToRect(fRenderTarget, fClip, grPaint, viewMatrix, dstRect, | 
| -                                          paintRect); | 
| +        fDrawContext->drawNonAARectToRect(fClip, grPaint, viewMatrix, dstRect, paintRect); | 
| } | 
| } | 
|  | 
| @@ -1466,8 +1464,7 @@ void SkGpuDevice::drawSprite(const SkDraw& draw, const SkBitmap& bitmap, | 
| return; | 
| } | 
|  | 
| -    fDrawContext->drawNonAARectToRect(fRenderTarget, | 
| -                                      fClip, | 
| +    fDrawContext->drawNonAARectToRect(fClip, | 
| grPaint, | 
| SkMatrix::I(), | 
| SkRect::MakeXYWH(SkIntToScalar(left), | 
| @@ -1597,8 +1594,7 @@ void SkGpuDevice::drawDevice(const SkDraw& draw, SkBaseDevice* device, | 
| SkRect srcRect = SkRect::MakeWH(SK_Scalar1 * w / devTex->width(), | 
| SK_Scalar1 * h / devTex->height()); | 
|  | 
| -    fDrawContext->drawNonAARectToRect(fRenderTarget, fClip, grPaint, SkMatrix::I(), dstRect, | 
| -                                      srcRect); | 
| +    fDrawContext->drawNonAARectToRect(fClip, grPaint, SkMatrix::I(), dstRect, srcRect); | 
| } | 
|  | 
| bool SkGpuDevice::canHandleImageFilter(const SkImageFilter* filter) { | 
| @@ -1749,8 +1745,7 @@ void SkGpuDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode, | 
| lineIndices[i + 5] = state.f0; | 
| i += 6; | 
| } | 
| -        fDrawContext->drawVertices(fRenderTarget, | 
| -                                   fClip, | 
| +        fDrawContext->drawVertices(fClip, | 
| grPaint, | 
| *draw.fMatrix, | 
| kLines_GrPrimitiveType, | 
| @@ -1813,8 +1808,7 @@ void SkGpuDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode, | 
| } | 
| } | 
|  | 
| -    fDrawContext->drawVertices(fRenderTarget, | 
| -                               fClip, | 
| +    fDrawContext->drawVertices(fClip, | 
| grPaint, | 
| *draw.fMatrix, | 
| primType, | 
| @@ -1855,8 +1849,7 @@ void SkGpuDevice::drawAtlas(const SkDraw& draw, const SkImage* atlas, const SkRS | 
| } | 
|  | 
| SkDEBUGCODE(this->validate();) | 
| -    fDrawContext->drawAtlas(fRenderTarget, fClip, grPaint, *draw.fMatrix, | 
| -                            count, xform, texRect, colors); | 
| +    fDrawContext->drawAtlas(fClip, grPaint, *draw.fMatrix, count, xform, texRect, colors); | 
| } | 
|  | 
| /////////////////////////////////////////////////////////////////////////////// | 
| @@ -1874,7 +1867,7 @@ void SkGpuDevice::drawText(const SkDraw& draw, const void* text, | 
|  | 
| SkDEBUGCODE(this->validate();) | 
|  | 
| -    fDrawContext->drawText(fRenderTarget, fClip, grPaint, paint, *draw.fMatrix, | 
| +    fDrawContext->drawText(fClip, grPaint, paint, *draw.fMatrix, | 
| (const char *)text, byteLength, x, y, draw.fClip->getBounds()); | 
| } | 
|  | 
| @@ -1891,7 +1884,7 @@ void SkGpuDevice::drawPosText(const SkDraw& draw, const void* text, size_t byteL | 
|  | 
| SkDEBUGCODE(this->validate();) | 
|  | 
| -    fDrawContext->drawPosText(fRenderTarget, fClip, grPaint, paint, *draw.fMatrix, | 
| +    fDrawContext->drawPosText(fClip, grPaint, paint, *draw.fMatrix, | 
| (const char *)text, byteLength, pos, scalarsPerPos, offset, | 
| draw.fClip->getBounds()); | 
| } | 
| @@ -1903,7 +1896,7 @@ void SkGpuDevice::drawTextBlob(const SkDraw& draw, const SkTextBlob* blob, SkSca | 
|  | 
| SkDEBUGCODE(this->validate();) | 
|  | 
| -    fDrawContext->drawTextBlob(fRenderTarget, fClip, paint, *draw.fMatrix, | 
| +    fDrawContext->drawTextBlob(fClip, paint, *draw.fMatrix, | 
| blob, x, y, drawFilter, draw.fClip->getBounds()); | 
| } | 
|  | 
|  |