| Index: src/gpu/effects/GrDistanceFieldGeoProc.cpp
|
| diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.cpp b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
|
| index 50e78ccb44e428b95a9cf07e7dea5ad850071802..b77a1f5a5d21fce5660895dee26070a8c8b12254 100644
|
| --- a/src/gpu/effects/GrDistanceFieldGeoProc.cpp
|
| +++ b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
|
| @@ -78,23 +78,20 @@ public:
|
|
|
| // add varyings
|
| GrGLSLVertToFrag recipScale(kFloat_GrSLType);
|
| - GrGLSLVertToFrag st(kVec2f_GrSLType);
|
| + GrGLSLVertToFrag uv(kVec2f_GrSLType);
|
| bool isSimilarity = SkToBool(dfTexEffect.getFlags() & kSimilarity_DistanceFieldEffectFlag);
|
| - varyingHandler->addVarying("IntTextureCoords", &st, kHigh_GrSLPrecision);
|
| - vertBuilder->codeAppendf("%s = %s;", st.vsOut(), dfTexEffect.inTextureCoords()->fName);
|
| + varyingHandler->addVarying("TextureCoords", &uv, kHigh_GrSLPrecision);
|
| + vertBuilder->codeAppendf("%s = %s;", uv.vsOut(), dfTexEffect.inTextureCoords()->fName);
|
|
|
| // compute numbers to be hardcoded to convert texture coordinates from int to float
|
| SkASSERT(dfTexEffect.numTextures() == 1);
|
| GrTexture* atlas = dfTexEffect.textureAccess(0).getTexture();
|
| SkASSERT(atlas && SkIsPow2(atlas->width()) && SkIsPow2(atlas->height()));
|
| - SkScalar recipWidth = 1.0f / atlas->width();
|
| - SkScalar recipHeight = 1.0f / atlas->height();
|
|
|
| - GrGLSLVertToFrag uv(kVec2f_GrSLType);
|
| - varyingHandler->addVarying("TextureCoords", &uv, kHigh_GrSLPrecision);
|
| - vertBuilder->codeAppendf("%s = vec2(%.*f, %.*f) * %s;", uv.vsOut(),
|
| - GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipWidth,
|
| - GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipHeight,
|
| + GrGLSLVertToFrag st(kVec2f_GrSLType);
|
| + varyingHandler->addVarying("IntTextureCoords", &st, kHigh_GrSLPrecision);
|
| + vertBuilder->codeAppendf("%s = vec2(%d, %d) * %s;", st.vsOut(),
|
| + atlas->width(), atlas->height(),
|
| dfTexEffect.inTextureCoords()->fName);
|
|
|
| // Use highp to work around aliasing issues
|
| @@ -224,7 +221,8 @@ GrDistanceFieldA8TextGeoProc::GrDistanceFieldA8TextGeoProc(GrColor color,
|
| kHigh_GrSLPrecision));
|
| fInColor = &this->addVertexAttrib(Attribute("inColor", kVec4ub_GrVertexAttribType));
|
| fInTextureCoords = &this->addVertexAttrib(Attribute("inTextureCoords",
|
| - kVec2s_GrVertexAttribType));
|
| + kVec2us_GrVertexAttribType,
|
| + kHigh_GrSLPrecision));
|
| this->addTextureAccess(&fTextureAccess);
|
| }
|
|
|
| @@ -522,22 +520,19 @@ public:
|
| // set up varyings
|
| bool isUniformScale = SkToBool(dfTexEffect.getFlags() & kUniformScale_DistanceFieldEffectMask);
|
| GrGLSLVertToFrag recipScale(kFloat_GrSLType);
|
| - GrGLSLVertToFrag st(kVec2f_GrSLType);
|
| - varyingHandler->addVarying("IntTextureCoords", &st, kHigh_GrSLPrecision);
|
| - vertBuilder->codeAppendf("%s = %s;", st.vsOut(), dfTexEffect.inTextureCoords()->fName);
|
| + GrGLSLVertToFrag uv(kVec2f_GrSLType);
|
| + varyingHandler->addVarying("TextureCoords", &uv, kHigh_GrSLPrecision);
|
| + vertBuilder->codeAppendf("%s = %s;", uv.vsOut(), dfTexEffect.inTextureCoords()->fName);
|
|
|
| // compute numbers to be hardcoded to convert texture coordinates from int to float
|
| SkASSERT(dfTexEffect.numTextures() == 1);
|
| GrTexture* atlas = dfTexEffect.textureAccess(0).getTexture();
|
| SkASSERT(atlas && SkIsPow2(atlas->width()) && SkIsPow2(atlas->height()));
|
| - SkScalar recipWidth = 1.0f / atlas->width();
|
| - SkScalar recipHeight = 1.0f / atlas->height();
|
|
|
| - GrGLSLVertToFrag uv(kVec2f_GrSLType);
|
| - varyingHandler->addVarying("TextureCoords", &uv, kHigh_GrSLPrecision);
|
| - vertBuilder->codeAppendf("%s = vec2(%.*f, %.*f) * %s;", uv.vsOut(),
|
| - GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipWidth,
|
| - GR_SIGNIFICANT_POW2_DECIMAL_DIG, recipHeight,
|
| + GrGLSLVertToFrag st(kVec2f_GrSLType);
|
| + varyingHandler->addVarying("IntTextureCoords", &st, kHigh_GrSLPrecision);
|
| + vertBuilder->codeAppendf("%s = vec2(%d, %d) * %s;", st.vsOut(),
|
| + atlas->width(), atlas->height(),
|
| dfTexEffect.inTextureCoords()->fName);
|
|
|
| // add frag shader code
|
| @@ -708,7 +703,8 @@ GrDistanceFieldLCDTextGeoProc::GrDistanceFieldLCDTextGeoProc(
|
| kHigh_GrSLPrecision));
|
| fInColor = &this->addVertexAttrib(Attribute("inColor", kVec4ub_GrVertexAttribType));
|
| fInTextureCoords = &this->addVertexAttrib(Attribute("inTextureCoords",
|
| - kVec2s_GrVertexAttribType));
|
| + kVec2us_GrVertexAttribType,
|
| + kHigh_GrSLPrecision));
|
| this->addTextureAccess(&fTextureAccess);
|
| }
|
|
|
|
|