| Index: src/gpu/GrAADistanceFieldPathRenderer.cpp
|
| diff --git a/src/gpu/GrAADistanceFieldPathRenderer.cpp b/src/gpu/GrAADistanceFieldPathRenderer.cpp
|
| index 95e4e7ac98d5a6f418220f959ce628c1841d6c17..e2cee650dc1fbf6b6ec020161b32a7ead3dd34a8 100755
|
| --- a/src/gpu/GrAADistanceFieldPathRenderer.cpp
|
| +++ b/src/gpu/GrAADistanceFieldPathRenderer.cpp
|
| @@ -31,6 +31,11 @@
|
| SK_CONF_DECLARE(bool, c_DumpPathCache, "gpu.dumpPathCache", false,
|
| "Dump the contents of the path cache before every purge.");
|
|
|
| +#ifdef DF_PATH_TRACKING
|
| +static int g_NumCachedPaths = 0;
|
| +static int g_NumFreedPaths = 0;
|
| +#endif
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| GrAADistanceFieldPathRenderer::~GrAADistanceFieldPathRenderer() {
|
| PathDataList::Iter iter;
|
| @@ -43,6 +48,10 @@ GrAADistanceFieldPathRenderer::~GrAADistanceFieldPathRenderer() {
|
| }
|
|
|
| SkDELETE(fAtlas);
|
| +
|
| +#ifdef DF_PATH_TRACKING
|
| + SkDebugf("Cached paths: %d, freed paths: %d\n", g_NumCachedPaths, g_NumFreedPaths);
|
| +#endif
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| @@ -50,10 +59,11 @@ bool GrAADistanceFieldPathRenderer::canDrawPath(const SkPath& path,
|
| const SkStrokeRec& stroke,
|
| const GrDrawTarget* target,
|
| bool antiAlias) const {
|
| +
|
| // TODO: Support inverse fill
|
| // TODO: Support strokes
|
| if (!target->caps()->shaderDerivativeSupport() || !antiAlias || path.isInverseFillType()
|
| - || SkStrokeRec::kFill_Style != stroke.getStyle()) {
|
| + || path.isVolatile() || SkStrokeRec::kFill_Style != stroke.getStyle()) {
|
| return false;
|
| }
|
|
|
| @@ -230,7 +240,10 @@ HAS_ATLAS:
|
|
|
| fPathCache.add(pathData);
|
| fPathList.addToTail(pathData);
|
| -
|
| +#ifdef DF_PATH_TRACKING
|
| + ++g_NumCachedPaths;
|
| +#endif
|
| +
|
| return pathData;
|
| }
|
|
|
| @@ -252,6 +265,9 @@ bool GrAADistanceFieldPathRenderer::freeUnusedPlot() {
|
| fPathCache.remove(pathData->fGenID);
|
| fPathList.remove(pathData);
|
| SkDELETE(pathData);
|
| +#ifdef DF_PATH_TRACKING
|
| + ++g_NumFreedPaths;
|
| +#endif
|
| }
|
| }
|
|
|
|
|