Index: src/gpu/GrDistanceFieldTextContext.cpp |
diff --git a/src/gpu/GrDistanceFieldTextContext.cpp b/src/gpu/GrDistanceFieldTextContext.cpp |
index 820223ddc49d1d9084db580b56c201a508d880be..f48d412a79d058b2e8f6c3f35830a05d159ae249 100755 |
--- a/src/gpu/GrDistanceFieldTextContext.cpp |
+++ b/src/gpu/GrDistanceFieldTextContext.cpp |
@@ -33,13 +33,15 @@ SK_CONF_DECLARE(bool, c_DumpFontCache, "gpu.dumpFontCache", false, |
static const int kSmallDFFontSize = 32; |
static const int kSmallDFFontLimit = 32; |
-static const int kMediumDFFontSize = 64; |
-static const int kMediumDFFontLimit = 64; |
-static const int kLargeDFFontSize = 128; |
+static const int kMediumDFFontSize = 78; |
+static const int kMediumDFFontLimit = 78; |
+static const int kLargeDFFontSize = 192; |
static const int kVerticesPerGlyph = 4; |
static const int kIndicesPerGlyph = 6; |
+static const int kMaxFontCacheSize = 256; |
+ |
GrDistanceFieldTextContext::GrDistanceFieldTextContext(GrContext* context, |
const SkDeviceProperties& properties, |
bool enable) |
@@ -80,7 +82,19 @@ GrDistanceFieldTextContext::~GrDistanceFieldTextContext() { |
} |
bool GrDistanceFieldTextContext::canDraw(const SkPaint& paint, const SkMatrix& viewMatrix) { |
- if (!fEnableDFRendering && !paint.isDistanceFieldTextTEMP()) { |
+ // TODO: support perspective (need getMaxScale replacement) |
+ if (viewMatrix.hasPerspective()) { |
+ return false; |
+ } |
+ |
+ SkScalar maxScale = viewMatrix.getMaxScale(); |
+ SkScalar scaledTextSize = maxScale*paint.getTextSize(); |
robertphillips
2015/01/28 00:03:16
// Scaling up beyond 2x yields undesireable artifa
jvanverth1
2015/01/28 17:47:38
Done.
|
+ if (scaledTextSize > 2*kLargeDFFontSize) { |
+ return false; |
+ } |
+ |
+ if (!fEnableDFRendering && !paint.isDistanceFieldTextTEMP() && |
+ scaledTextSize < kMaxFontCacheSize) { |
return false; |
} |
@@ -96,12 +110,6 @@ bool GrDistanceFieldTextContext::canDraw(const SkPaint& paint, const SkMatrix& v |
return false; |
} |
- // TODO: choose an appropriate maximum scale for distance fields and |
- // enable perspective |
robertphillips
2015/01/28 00:03:16
Is ShouldDrawTextAsPaths still used anywhere?
jvanverth1
2015/01/28 17:47:38
It's still used in BitmapTextContext, and in raste
|
- if (SkDraw::ShouldDrawTextAsPaths(paint, viewMatrix)) { |
- return false; |
- } |
- |
return true; |
} |