Index: src/gpu/GrDistanceFieldTextContext.cpp |
diff --git a/src/gpu/GrDistanceFieldTextContext.cpp b/src/gpu/GrDistanceFieldTextContext.cpp |
index bd3927c648839232f655aaead473cee7a7892b21..27323c4e60ae8250e496faa74d61014cd6269618 100755 |
--- a/src/gpu/GrDistanceFieldTextContext.cpp |
+++ b/src/gpu/GrDistanceFieldTextContext.cpp |
@@ -8,6 +8,7 @@ |
#include "GrDistanceFieldTextContext.h" |
#include "GrAtlas.h" |
#include "GrDrawTarget.h" |
+#include "GrDrawTargetCaps.h" |
#include "GrFontScaler.h" |
#include "SkGlyphCache.h" |
#include "GrIndexBuffer.h" |
@@ -46,6 +47,7 @@ GrDistanceFieldTextContext::~GrDistanceFieldTextContext() { |
bool GrDistanceFieldTextContext::canDraw(const SkPaint& paint) { |
return !paint.getRasterizer() && !paint.getMaskFilter() && |
paint.getStyle() == SkPaint::kFill_Style && |
+ fContext->getTextTarget()->caps()->shaderDerivativeSupport() && |
!SkDraw::ShouldDrawTextAsPaths(paint, fContext->getMatrix()); |
} |
@@ -72,8 +74,9 @@ void GrDistanceFieldTextContext::flushGlyphs() { |
GrTextureParams params(SkShader::kRepeat_TileMode, GrTextureParams::kBilerp_FilterMode); |
// This effect could be stored with one of the cache objects (atlas?) |
+ SkISize size = fStrike->getAtlasSize(); |
drawState->addCoverageEffect( |
- GrDistanceFieldTextureEffect::Create(fCurrTexture, params), |
+ GrDistanceFieldTextureEffect::Create(fCurrTexture, params, size), |
kGlyphCoordsAttributeIndex)->unref(); |
if (!GrPixelConfigIsAlphaOnly(fCurrTexture->config())) { |
@@ -263,22 +266,23 @@ HAS_ATLAS: |
sy += dy; |
width *= scale; |
height *= scale; |
- |
+ |
GrFixed tx = SkIntToFixed(glyph->fAtlasLocation.fX); |
GrFixed ty = SkIntToFixed(glyph->fAtlasLocation.fY); |
GrFixed tw = SkIntToFixed(glyph->fBounds.width()); |
GrFixed th = SkIntToFixed(glyph->fBounds.height()); |
+ static const size_t kVertexSize = 2 * sizeof(SkPoint); |
fVertices[2*fCurrVertex].setRectFan(sx, |
sy, |
sx + width, |
sy + height, |
- 2 * sizeof(SkPoint)); |
+ kVertexSize); |
fVertices[2*fCurrVertex+1].setRectFan(SkFixedToFloat(texture->normalizeFixedX(tx)), |
SkFixedToFloat(texture->normalizeFixedY(ty)), |
SkFixedToFloat(texture->normalizeFixedX(tx + tw)), |
SkFixedToFloat(texture->normalizeFixedY(ty + th)), |
- 2 * sizeof(SkPoint)); |
+ kVertexSize); |
fCurrVertex += 4; |
} |