| Index: src/gpu/GrAARectRenderer.cpp
|
| diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp
|
| index 0f258f9568be8a871205e82610540d16ef71e569..27d12c99bdfeff8b57694df1e3717ddc25a55297 100644
|
| --- a/src/gpu/GrAARectRenderer.cpp
|
| +++ b/src/gpu/GrAARectRenderer.cpp
|
| @@ -176,10 +176,10 @@ GrIndexBuffer* GrAARectRenderer::aaStrokeRectIndexBuffer(bool miterStroke) {
|
| }
|
|
|
| void GrAARectRenderer::geometryFillAARect(GrDrawTarget* target,
|
| + GrDrawState* drawState,
|
| const SkRect& rect,
|
| const SkMatrix& combinedMatrix,
|
| const SkRect& devRect) {
|
| - GrDrawState* drawState = target->drawState();
|
| GrDrawState::AutoRestoreEffects are(drawState);
|
|
|
| GrColor color = drawState->getColor();
|
| @@ -189,7 +189,7 @@ void GrAARectRenderer::geometryFillAARect(GrDrawTarget* target,
|
| drawState->setHint(GrDrawState::kVertexColorsAreOpaque_Hint, true);
|
| }
|
|
|
| - GrDrawTarget::AutoReleaseGeometry geo(target, 8, 0);
|
| + GrDrawTarget::AutoReleaseGeometry geo(target, 8, drawState->getVertexStride(), 0);
|
| if (!geo.succeeded()) {
|
| SkDebugf("Failed to get space for vertices!\n");
|
| return;
|
| @@ -299,13 +299,16 @@ void GrAARectRenderer::geometryFillAARect(GrDrawTarget* target,
|
| }
|
|
|
| target->setIndexSourceToBuffer(indexBuffer);
|
| - target->drawIndexedInstances(kTriangles_GrPrimitiveType, 1,
|
| + target->drawIndexedInstances(drawState,
|
| + kTriangles_GrPrimitiveType,
|
| + 1,
|
| kVertsPerAAFillRect,
|
| kIndicesPerAAFillRect);
|
| target->resetIndexSource();
|
| }
|
|
|
| void GrAARectRenderer::strokeAARect(GrDrawTarget* target,
|
| + GrDrawState* drawState,
|
| const SkRect& rect,
|
| const SkMatrix& combinedMatrix,
|
| const SkRect& devRect,
|
| @@ -352,7 +355,7 @@ void GrAARectRenderer::strokeAARect(GrDrawTarget* target,
|
| }
|
|
|
| if (spare <= 0 && miterStroke) {
|
| - this->fillAARect(target, devOutside, SkMatrix::I(), devOutside);
|
| + this->fillAARect(target, drawState, devOutside, SkMatrix::I(), devOutside);
|
| return;
|
| }
|
|
|
| @@ -369,17 +372,17 @@ void GrAARectRenderer::strokeAARect(GrDrawTarget* target,
|
| devOutsideAssist.outset(0, ry);
|
| }
|
|
|
| - this->geometryStrokeAARect(target, devOutside, devOutsideAssist, devInside, miterStroke);
|
| + this->geometryStrokeAARect(target, drawState, devOutside, devOutsideAssist, devInside,
|
| + miterStroke);
|
| }
|
|
|
| void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target,
|
| + GrDrawState* drawState,
|
| const SkRect& devOutside,
|
| const SkRect& devOutsideAssist,
|
| const SkRect& devInside,
|
| bool miterStroke) {
|
| - GrDrawState* drawState = target->drawState();
|
| GrDrawState::AutoRestoreEffects are(drawState);
|
| -
|
| CoverageAttribType covAttribType = set_rect_attribs(drawState);
|
|
|
| GrColor color = drawState->getColor();
|
| @@ -391,7 +394,7 @@ void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target,
|
| int outerVertexNum = miterStroke ? 4 : 8;
|
| int totalVertexNum = (outerVertexNum + innerVertexNum) * 2;
|
|
|
| - GrDrawTarget::AutoReleaseGeometry geo(target, totalVertexNum, 0);
|
| + GrDrawTarget::AutoReleaseGeometry geo(target, totalVertexNum, drawState->getVertexStride(), 0);
|
| if (!geo.succeeded()) {
|
| SkDebugf("Failed to get space for vertices!\n");
|
| return;
|
| @@ -498,12 +501,16 @@ void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target,
|
| }
|
|
|
| target->setIndexSourceToBuffer(indexBuffer);
|
| - target->drawIndexedInstances(kTriangles_GrPrimitiveType, 1,
|
| - totalVertexNum, aa_stroke_rect_index_count(miterStroke));
|
| + target->drawIndexedInstances(drawState,
|
| + kTriangles_GrPrimitiveType,
|
| + 1,
|
| + totalVertexNum,
|
| + aa_stroke_rect_index_count(miterStroke));
|
| target->resetIndexSource();
|
| }
|
|
|
| void GrAARectRenderer::fillAANestedRects(GrDrawTarget* target,
|
| + GrDrawState* drawState,
|
| const SkRect rects[2],
|
| const SkMatrix& combinedMatrix) {
|
| SkASSERT(combinedMatrix.rectStaysRect());
|
| @@ -515,9 +522,9 @@ void GrAARectRenderer::fillAANestedRects(GrDrawTarget* target,
|
| combinedMatrix.mapPoints((SkPoint*)&devInside, (const SkPoint*)&rects[1], 2);
|
|
|
| if (devInside.isEmpty()) {
|
| - this->fillAARect(target, devOutside, SkMatrix::I(), devOutside);
|
| + this->fillAARect(target, drawState, devOutside, SkMatrix::I(), devOutside);
|
| return;
|
| }
|
|
|
| - this->geometryStrokeAARect(target, devOutside, devOutsideAssist, devInside, true);
|
| + this->geometryStrokeAARect(target, drawState, devOutside, devOutsideAssist, devInside, true);
|
| }
|
|
|