Index: src/gpu/effects/GrBitmapTextGeoProc.cpp |
diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp |
index 9496dbffc33540c3d64d35e1112a28d3d8a524ca..a0350e99f5e40ebb4248f001b0bb1e53f6079827 100644 |
--- a/src/gpu/effects/GrBitmapTextGeoProc.cpp |
+++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp |
@@ -28,19 +28,18 @@ |
// emit attributes |
vsBuilder->emitAttributes(cte); |
- // compute numbers to be hardcoded to convert texture coordinates from int to float |
- SkASSERT(cte.numTextures() == 1); |
- GrTexture* atlas = cte.textureAccess(0).getTexture(); |
- SkASSERT(atlas); |
- SkScalar recipWidth = 1.0f / atlas->width(); |
- SkScalar recipHeight = 1.0f / atlas->height(); |
- |
GrGLVertToFrag v(kVec2f_GrSLType); |
pb->addVarying("TextureCoords", &v); |
- vsBuilder->codeAppendf("%s = vec2(%.*f, %.*f) * %s;", v.vsOut(), |
- SK_FLT_DECIMAL_DIG, recipWidth, |
- SK_FLT_DECIMAL_DIG, recipHeight, |
- cte.inTextureCoords()->fName); |
+ // this is only used with text, so our texture bounds always match the glyph atlas |
+ if (cte.maskFormat() == kA8_GrMaskFormat) { |
+ vsBuilder->codeAppendf("%s = vec2(" GR_FONT_ATLAS_A8_RECIP_WIDTH ", " |
+ GR_FONT_ATLAS_RECIP_HEIGHT ")*%s;", v.vsOut(), |
+ cte.inTextureCoords()->fName); |
+ } else { |
+ vsBuilder->codeAppendf("%s = vec2(" GR_FONT_ATLAS_RECIP_WIDTH ", " |
+ GR_FONT_ATLAS_RECIP_HEIGHT ")*%s;", v.vsOut(), |
+ cte.inTextureCoords()->fName); |
+ } |
// Setup pass through color |
if (!cte.colorIgnored()) { |
@@ -103,13 +102,6 @@ |
key |= gp.colorIgnored() ? 0x2 : 0x0; |
key |= gp.maskFormat() << 3; |
b->add32(key); |
- |
- // Currently we hardcode numbers to convert atlas coordinates to normalized floating point |
- SkASSERT(gp.numTextures() == 1); |
- GrTexture* atlas = gp.textureAccess(0).getTexture(); |
- SkASSERT(atlas); |
- b->add32(atlas->width()); |
- b->add32(atlas->height()); |
} |
private: |