| Index: src/gpu/GrOvalRenderer.cpp | 
| diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp | 
| index 9a02a871570ed8ca073e0013a768f5e02a60ee42..f6b81f266a15c99e7fa8cfffaca1be722d8fab80 100644 | 
| --- a/src/gpu/GrOvalRenderer.cpp | 
| +++ b/src/gpu/GrOvalRenderer.cpp | 
| @@ -835,6 +835,8 @@ private: | 
| CircleBatch(const Geometry& geometry) { | 
| this->initClassID<CircleBatch>(); | 
| fGeoData.push_back(geometry); | 
| + | 
| +        this->setBounds(geometry.fDevBounds); | 
| } | 
|  | 
| bool onCombineIfPossible(GrBatch* t) override { | 
| @@ -855,6 +857,7 @@ private: | 
| } | 
|  | 
| fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); | 
| +        this->joinBounds(that->bounds()); | 
| return true; | 
| } | 
|  | 
| @@ -934,7 +937,7 @@ void GrOvalRenderer::drawCircle(GrDrawTarget* target, | 
| geometry.fDevBounds = bounds; | 
|  | 
| SkAutoTUnref<GrBatch> batch(CircleBatch::Create(geometry)); | 
| -    target->drawBatch(pipelineBuilder, batch, &bounds); | 
| +    target->drawBatch(pipelineBuilder, batch); | 
| } | 
|  | 
| /////////////////////////////////////////////////////////////////////////////// | 
| @@ -1095,6 +1098,8 @@ private: | 
| EllipseBatch(const Geometry& geometry) { | 
| this->initClassID<EllipseBatch>(); | 
| fGeoData.push_back(geometry); | 
| + | 
| +        this->setBounds(geometry.fDevBounds); | 
| } | 
|  | 
| bool onCombineIfPossible(GrBatch* t) override { | 
| @@ -1115,6 +1120,7 @@ private: | 
| } | 
|  | 
| fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); | 
| +        this->joinBounds(that->bounds()); | 
| return true; | 
| } | 
|  | 
| @@ -1231,7 +1237,7 @@ bool GrOvalRenderer::drawEllipse(GrDrawTarget* target, | 
| geometry.fDevBounds = bounds; | 
|  | 
| SkAutoTUnref<GrBatch> batch(EllipseBatch::Create(geometry)); | 
| -    target->drawBatch(pipelineBuilder, batch, &bounds); | 
| +    target->drawBatch(pipelineBuilder, batch); | 
|  | 
| return true; | 
| } | 
| @@ -1387,6 +1393,9 @@ private: | 
| DIEllipseBatch(const Geometry& geometry) { | 
| this->initClassID<DIEllipseBatch>(); | 
| fGeoData.push_back(geometry); | 
| + | 
| +        this->setBounds(geometry.fBounds); | 
| +        geometry.fViewMatrix.mapRect(this->getBounds()); | 
| } | 
|  | 
| bool onCombineIfPossible(GrBatch* t) override { | 
| @@ -1407,6 +1416,7 @@ private: | 
| } | 
|  | 
| fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); | 
| +        this->joinBounds(that->bounds()); | 
| return true; | 
| } | 
|  | 
| @@ -1511,10 +1521,8 @@ bool GrOvalRenderer::drawDIEllipse(GrDrawTarget* target, | 
| geometry.fMode = mode; | 
| geometry.fBounds = bounds; | 
|  | 
| -    viewMatrix.mapRect(&bounds); | 
| - | 
| SkAutoTUnref<GrBatch> batch(DIEllipseBatch::Create(geometry)); | 
| -    target->drawBatch(pipelineBuilder, batch, &bounds); | 
| +    target->drawBatch(pipelineBuilder, batch); | 
|  | 
| return true; | 
| } | 
| @@ -1797,6 +1805,8 @@ private: | 
| : fIndexBuffer(indexBuffer) { | 
| this->initClassID<RRectCircleRendererBatch>(); | 
| fGeoData.push_back(geometry); | 
| + | 
| +        this->setBounds(geometry.fDevBounds); | 
| } | 
|  | 
| bool onCombineIfPossible(GrBatch* t) override { | 
| @@ -1817,6 +1827,7 @@ private: | 
| } | 
|  | 
| fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); | 
| +        this->joinBounds(that->bounds()); | 
| return true; | 
| } | 
|  | 
| @@ -2016,6 +2027,8 @@ private: | 
| : fIndexBuffer(indexBuffer) { | 
| this->initClassID<RRectEllipseRendererBatch>(); | 
| fGeoData.push_back(geometry); | 
| + | 
| +        this->setBounds(geometry.fDevBounds); | 
| } | 
|  | 
| bool onCombineIfPossible(GrBatch* t) override { | 
| @@ -2036,6 +2049,7 @@ private: | 
| } | 
|  | 
| fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()); | 
| +        this->joinBounds(that->bounds()); | 
| return true; | 
| } | 
|  | 
| @@ -2174,7 +2188,7 @@ bool GrOvalRenderer::drawRRect(GrDrawTarget* target, | 
| geometry.fDevBounds = bounds; | 
|  | 
| SkAutoTUnref<GrBatch> batch(RRectCircleRendererBatch::Create(geometry, indexBuffer)); | 
| -        target->drawBatch(pipelineBuilder, batch, &bounds); | 
| +        target->drawBatch(pipelineBuilder, batch); | 
|  | 
| // otherwise we use the ellipse renderer | 
| } else { | 
| @@ -2226,7 +2240,7 @@ bool GrOvalRenderer::drawRRect(GrDrawTarget* target, | 
| geometry.fDevBounds = bounds; | 
|  | 
| SkAutoTUnref<GrBatch> batch(RRectEllipseRendererBatch::Create(geometry, indexBuffer)); | 
| -        target->drawBatch(pipelineBuilder, batch, &bounds); | 
| +        target->drawBatch(pipelineBuilder, batch); | 
| } | 
| return true; | 
| } | 
|  |