| Index: src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
|
| diff --git a/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp b/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
|
| index ba52bf921372f33140ba11589936ce67afb0affb..f891b8d1f592495a2358c746e36a983d042c0f43 100644
|
| --- a/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
|
| +++ b/src/gpu/batches/GrAADistanceFieldPathRenderer.cpp
|
| @@ -81,14 +81,13 @@
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| bool GrAADistanceFieldPathRenderer::onCanDrawPath(const CanDrawPathArgs& args) const {
|
| - // We don't currently apply the dash or factor it into the DF key. (skbug.com/5082)
|
| - if (args.fStyle->pathEffect()) {
|
| - return false;
|
| - }
|
| +
|
| // TODO: Support inverse fill
|
| if (!args.fShaderCaps->shaderDerivativeSupport() || !args.fAntiAlias ||
|
| - args.fStyle->isSimpleHairline() || args.fPath->isInverseFillType() ||
|
| - args.fPath->isVolatile()) {
|
| + SkStrokeRec::kHairline_Style == args.fStroke->getStyle() ||
|
| + args.fPath->isInverseFillType() || args.fPath->isVolatile() ||
|
| + // We don't currently apply the dash or factor it into the DF key. (skbug.com/5082)
|
| + args.fStroke->isDashed()) {
|
| return false;
|
| }
|
|
|
| @@ -101,23 +100,16 @@
|
| // scaled to have bounds within 2.0f*kLargeMIP by 2.0f*kLargeMIP
|
| // the goal is to accelerate rendering of lots of small paths that may be scaling
|
| SkScalar maxScale = args.fViewMatrix->getMaxScale();
|
| -#if 0 // This is more accurate but changes some GMs. TODO: Standalone change to enable this.
|
| - SkRect bounds;
|
| - args.fStyle->adjustBounds(&bounds, args.fPath->getBounds());
|
| - SkScalar maxDim = SkMaxScalar(bounds.width(), bounds.height());
|
| -#else
|
| const SkRect& bounds = args.fPath->getBounds();
|
| SkScalar maxDim = SkMaxScalar(bounds.width(), bounds.height());
|
| - const SkStrokeRec& stroke = args.fStyle->strokeRec();
|
| // Approximate stroked size by adding the maximum of the stroke width or 2x the miter limit
|
| - if (!stroke.isFillStyle()) {
|
| - SkScalar extraWidth = stroke.getWidth();
|
| - if (SkPaint::kMiter_Join == stroke.getJoin()) {
|
| - extraWidth = SkTMax(extraWidth, 2.0f*stroke.getMiter());
|
| + if (!args.fStroke->isFillStyle()) {
|
| + SkScalar extraWidth = args.fStroke->getWidth();
|
| + if (SkPaint::kMiter_Join == args.fStroke->getJoin()) {
|
| + extraWidth = SkTMax(extraWidth, 2.0f*args.fStroke->getMiter());
|
| }
|
| maxDim += extraWidth;
|
| }
|
| -#endif
|
|
|
| return maxDim <= kMediumMIP && maxDim * maxScale <= 2.0f*kLargeMIP;
|
| }
|
| @@ -560,12 +552,11 @@
|
| }
|
| }
|
|
|
| - // It's ok to ignore style's path effect because canDrawPath filtered out path effects.
|
| - AADistanceFieldPathBatch::Geometry geometry(args.fStyle->strokeRec());
|
| - if (args.fStyle->isSimpleFill()) {
|
| + AADistanceFieldPathBatch::Geometry geometry(*args.fStroke);
|
| + if (SkStrokeRec::kFill_Style == args.fStroke->getStyle()) {
|
| geometry.fPath = *args.fPath;
|
| } else {
|
| - args.fStyle->strokeRec().applyToPath(&geometry.fPath, *args.fPath);
|
| + args.fStroke->applyToPath(&geometry.fPath, *args.fPath);
|
| }
|
| geometry.fColor = args.fColor;
|
| geometry.fAntiAlias = args.fAntiAlias;
|
|
|