| Index: src/gpu/GrContext.cpp | 
| diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp | 
| index 95e0d51cf8979dae8c9a6eaf7cfbd9956d42c540..5b23fedbf068be0f3114ce757ef24ff09fa54bb2 100755 | 
| --- a/src/gpu/GrContext.cpp | 
| +++ b/src/gpu/GrContext.cpp | 
| @@ -782,8 +782,7 @@ static inline bool rect_contains_inclusive(const SkRect& rect, const SkPoint& po | 
|  | 
| void GrContext::drawRect(const GrPaint& paint, | 
| const SkRect& rect, | 
| -                         const GrStrokeInfo* strokeInfo, | 
| -                         const SkMatrix* matrix) { | 
| +                         const GrStrokeInfo* strokeInfo) { | 
| if (NULL != strokeInfo && strokeInfo->isDashed()) { | 
| SkPath path; | 
| path.addRect(rect); | 
| @@ -797,10 +796,7 @@ void GrContext::drawRect(const GrPaint& paint, | 
|  | 
| GR_CREATE_TRACE_MARKER("GrContext::drawRect", target); | 
| SkScalar width = NULL == strokeInfo ? -1 : strokeInfo->getStrokeRec().getWidth(); | 
| -    SkMatrix combinedMatrix = target->drawState()->getViewMatrix(); | 
| -    if (NULL != matrix) { | 
| -        combinedMatrix.preConcat(*matrix); | 
| -    } | 
| +    SkMatrix matrix = target->drawState()->getViewMatrix(); | 
|  | 
| // Check if this is a full RT draw and can be replaced with a clear. We don't bother checking | 
| // cases where the RT is fully inside a stroke. | 
| @@ -817,7 +813,7 @@ void GrContext::drawRect(const GrPaint& paint, | 
| // Does the clip contain the entire RT? | 
| if (!checkClip || target->getClip()->fClipStack->quickContains(clipSpaceRTRect)) { | 
| SkMatrix invM; | 
| -            if (!combinedMatrix.invert(&invM)) { | 
| +            if (!matrix.invert(&invM)) { | 
| return; | 
| } | 
| // Does the rect bound the RT? | 
| @@ -841,7 +837,7 @@ void GrContext::drawRect(const GrPaint& paint, | 
| bool useVertexCoverage; | 
| bool needAA = paint.isAntiAlias() && | 
| !target->getDrawState().getRenderTarget()->isMultisampled(); | 
| -    bool doAA = needAA && apply_aa_to_rect(target, rect, width, combinedMatrix, &devBoundRect, | 
| +    bool doAA = needAA && apply_aa_to_rect(target, rect, width, matrix, &devBoundRect, | 
| &useVertexCoverage); | 
|  | 
| const SkStrokeRec& strokeRec = strokeInfo->getStrokeRec(); | 
| @@ -853,12 +849,12 @@ void GrContext::drawRect(const GrPaint& paint, | 
| } | 
| if (width >= 0) { | 
| fAARectRenderer->strokeAARect(this->getGpu(), target, rect, | 
| -                                          combinedMatrix, devBoundRect, | 
| +                                          matrix, devBoundRect, | 
| strokeRec, useVertexCoverage); | 
| } else { | 
| // filled AA rect | 
| fAARectRenderer->fillAARect(this->getGpu(), target, | 
| -                                        rect, combinedMatrix, devBoundRect, | 
| +                                        rect, matrix, devBoundRect, | 
| useVertexCoverage); | 
| } | 
| return; | 
| @@ -897,23 +893,16 @@ void GrContext::drawRect(const GrPaint& paint, | 
| vertex[4].set(rect.fLeft, rect.fTop); | 
| } | 
|  | 
| -        GrDrawState::AutoViewMatrixRestore avmr; | 
| -        if (NULL != matrix) { | 
| -            GrDrawState* drawState = target->drawState(); | 
| -            avmr.set(drawState, *matrix); | 
| -        } | 
| - | 
| target->drawNonIndexed(primType, 0, vertCount); | 
| } else { | 
| // filled BW rect | 
| -        target->drawSimpleRect(rect, matrix); | 
| +        target->drawSimpleRect(rect); | 
| } | 
| } | 
|  | 
| void GrContext::drawRectToRect(const GrPaint& paint, | 
| const SkRect& dstRect, | 
| const SkRect& localRect, | 
| -                               const SkMatrix* dstMatrix, | 
| const SkMatrix* localMatrix) { | 
| AutoRestoreEffects are; | 
| AutoCheckFlush acf(this); | 
| @@ -921,7 +910,7 @@ void GrContext::drawRectToRect(const GrPaint& paint, | 
|  | 
| GR_CREATE_TRACE_MARKER("GrContext::drawRectToRect", target); | 
|  | 
| -    target->drawRect(dstRect, dstMatrix, &localRect, localMatrix); | 
| +    target->drawRect(dstRect, &localRect, localMatrix); | 
| } | 
|  | 
| namespace { | 
| @@ -1498,7 +1487,7 @@ bool GrContext::readRenderTargetPixels(GrRenderTarget* target, | 
|  | 
| drawState->setRenderTarget(texture->asRenderTarget()); | 
| SkRect rect = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(height)); | 
| -                fGpu->drawSimpleRect(rect, NULL); | 
| +                fGpu->drawSimpleRect(rect); | 
| // we want to read back from the scratch's origin | 
| left = 0; | 
| top = 0; | 
| @@ -1578,7 +1567,7 @@ void GrContext::copyTexture(GrTexture* src, GrRenderTarget* dst, const SkIPoint* | 
| sampleM.preTranslate(SkIntToScalar(srcRect.fLeft), SkIntToScalar(srcRect.fTop)); | 
| drawState->addColorTextureEffect(src, sampleM); | 
| SkRect dstR = SkRect::MakeWH(SkIntToScalar(srcRect.width()), SkIntToScalar(srcRect.height())); | 
| -    fGpu->drawSimpleRect(dstR, NULL); | 
| +    fGpu->drawSimpleRect(dstR); | 
| } | 
|  | 
| bool GrContext::writeRenderTargetPixels(GrRenderTarget* target, | 
| @@ -1705,7 +1694,7 @@ bool GrContext::writeRenderTargetPixels(GrRenderTarget* target, | 
|  | 
| drawState->setRenderTarget(target); | 
|  | 
| -    fGpu->drawSimpleRect(SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(height)), NULL); | 
| +    fGpu->drawSimpleRect(SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(height))); | 
| return true; | 
| } | 
| //////////////////////////////////////////////////////////////////////////////// | 
|  |