| Index: src/gpu/GrAADistanceFieldPathRenderer.cpp
|
| diff --git a/src/gpu/GrAADistanceFieldPathRenderer.cpp b/src/gpu/GrAADistanceFieldPathRenderer.cpp
|
| index cb0c892dae88754c4dd79097a4ca404c1eb197f4..5e0410fd751994459bf392561b962413f0d05652 100755
|
| --- a/src/gpu/GrAADistanceFieldPathRenderer.cpp
|
| +++ b/src/gpu/GrAADistanceFieldPathRenderer.cpp
|
| @@ -65,9 +65,10 @@ GrAADistanceFieldPathRenderer::~GrAADistanceFieldPathRenderer() {
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| -bool GrAADistanceFieldPathRenderer::canDrawPath(const SkPath& path,
|
| +bool GrAADistanceFieldPathRenderer::canDrawPath(const GrDrawTarget* target,
|
| + const GrDrawState* drawState,
|
| + const SkPath& path,
|
| const SkStrokeRec& stroke,
|
| - const GrDrawTarget* target,
|
| bool antiAlias) const {
|
|
|
| // TODO: Support inverse fill
|
| @@ -78,8 +79,7 @@ bool GrAADistanceFieldPathRenderer::canDrawPath(const SkPath& path,
|
| }
|
|
|
| // currently don't support perspective
|
| - const GrDrawState& drawState = target->getDrawState();
|
| - const SkMatrix& vm = drawState.getViewMatrix();
|
| + const SkMatrix& vm = drawState->getViewMatrix();
|
| if (vm.hasPerspective()) {
|
| return false;
|
| }
|
| @@ -93,10 +93,11 @@ bool GrAADistanceFieldPathRenderer::canDrawPath(const SkPath& path,
|
| }
|
|
|
|
|
| -GrPathRenderer::StencilSupport GrAADistanceFieldPathRenderer::onGetStencilSupport(
|
| - const SkPath&,
|
| - const SkStrokeRec&,
|
| - const GrDrawTarget*) const {
|
| +GrPathRenderer::StencilSupport
|
| +GrAADistanceFieldPathRenderer::onGetStencilSupport(const GrDrawTarget*,
|
| + const GrDrawState*,
|
| + const SkPath&,
|
| + const SkStrokeRec&) const {
|
| return GrPathRenderer::kNoSupport_StencilSupport;
|
| }
|
|
|
| @@ -109,9 +110,10 @@ extern const GrVertexAttrib gSDFPathVertexAttribs[] = {
|
| };
|
| static const size_t kSDFPathVASize = 2 * sizeof(SkPoint);
|
|
|
| -bool GrAADistanceFieldPathRenderer::onDrawPath(const SkPath& path,
|
| +bool GrAADistanceFieldPathRenderer::onDrawPath(GrDrawTarget* target,
|
| + GrDrawState* drawState,
|
| + const SkPath& path,
|
| const SkStrokeRec& stroke,
|
| - GrDrawTarget* target,
|
| bool antiAlias) {
|
| // we've already bailed on inverse filled paths, so this is safe
|
| if (path.isEmpty()) {
|
| @@ -121,8 +123,7 @@ bool GrAADistanceFieldPathRenderer::onDrawPath(const SkPath& path,
|
| SkASSERT(fContext);
|
|
|
| // get mip level
|
| - const GrDrawState& drawState = target->getDrawState();
|
| - const SkMatrix& vm = drawState.getViewMatrix();
|
| + const SkMatrix& vm = drawState->getViewMatrix();
|
| SkScalar maxScale = vm.getMaxScale();
|
| const SkRect& bounds = path.getBounds();
|
| SkScalar maxDim = SkMaxScalar(bounds.width(), bounds.height());
|
| @@ -149,7 +150,7 @@ bool GrAADistanceFieldPathRenderer::onDrawPath(const SkPath& path,
|
| }
|
|
|
| // use signed distance field to render
|
| - return this->internalDrawPath(path, pathData, target);
|
| + return this->internalDrawPath(target, drawState, path, pathData);
|
| }
|
|
|
| // padding around path bounds to allow for antialiased pixels
|
| @@ -310,11 +311,11 @@ bool GrAADistanceFieldPathRenderer::freeUnusedPlot() {
|
| return true;
|
| }
|
|
|
| -bool GrAADistanceFieldPathRenderer::internalDrawPath(const SkPath& path,
|
| - const PathData* pathData,
|
| - GrDrawTarget* target) {
|
| +bool GrAADistanceFieldPathRenderer::internalDrawPath(GrDrawTarget* target,
|
| + GrDrawState* drawState,
|
| + const SkPath& path,
|
| + const PathData* pathData) {
|
| GrTexture* texture = fAtlas->getTexture();
|
| - GrDrawState* drawState = target->drawState();
|
| GrDrawState::AutoRestoreEffects are(drawState);
|
|
|
| SkASSERT(pathData->fPlot);
|
| @@ -325,7 +326,8 @@ bool GrAADistanceFieldPathRenderer::internalDrawPath(const SkPath& path,
|
| drawState->setVertexAttribs<gSDFPathVertexAttribs>(SK_ARRAY_COUNT(gSDFPathVertexAttribs),
|
| kSDFPathVASize);
|
| void* vertices = NULL;
|
| - bool success = target->reserveVertexAndIndexSpace(4, 0, &vertices, NULL);
|
| + bool success = target->reserveVertexAndIndexSpace(4, drawState->getVertexStride(), 0, &vertices,
|
| + NULL);
|
| GrAlwaysAssert(success);
|
|
|
| SkScalar dx = pathData->fBounds.fLeft;
|
| @@ -375,7 +377,7 @@ bool GrAADistanceFieldPathRenderer::internalDrawPath(const SkPath& path,
|
|
|
| vm.mapRect(&r);
|
| target->setIndexSourceToBuffer(fContext->getQuadIndexBuffer());
|
| - target->drawIndexedInstances(kTriangles_GrPrimitiveType, 1, 4, 6, &r);
|
| + target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 4, 6, &r);
|
| target->resetVertexSource();
|
|
|
| return true;
|
|
|