| Index: src/gpu/effects/GrTextureDomainEffect.cpp | 
| diff --git a/src/gpu/effects/GrTextureDomainEffect.cpp b/src/gpu/effects/GrTextureDomainEffect.cpp | 
| index 59bd9099a4fd496ed34f631ecb38df11f71a2153..eca99d73a86b7f64d02028e9505592c2f905e17d 100644 | 
| --- a/src/gpu/effects/GrTextureDomainEffect.cpp | 
| +++ b/src/gpu/effects/GrTextureDomainEffect.cpp | 
| @@ -9,7 +9,6 @@ | 
| #include "GrSimpleTextureEffect.h" | 
| #include "GrTBackendEffectFactory.h" | 
| #include "gl/GrGLEffect.h" | 
| -#include "gl/GrGLEffectMatrix.h" | 
| #include "SkFloatingPoint.h" | 
|  | 
| class GrGLTextureDomainEffect : public GrGLEffect { | 
| @@ -21,6 +20,7 @@ public: | 
| EffectKey, | 
| const char* outputColor, | 
| const char* inputColor, | 
| +                          const TransformedCoordsArray&, | 
| const TextureSamplerArray&) SK_OVERRIDE; | 
|  | 
| virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE; | 
| @@ -29,16 +29,14 @@ public: | 
|  | 
| private: | 
| GrGLUniformManager::UniformHandle fNameUni; | 
| -    GrGLEffectMatrix                  fEffectMatrix; | 
| GrGLfloat                         fPrevDomain[4]; | 
|  | 
| typedef GrGLEffect INHERITED; | 
| }; | 
|  | 
| GrGLTextureDomainEffect::GrGLTextureDomainEffect(const GrBackendEffectFactory& factory, | 
| -                                                 const GrDrawEffect& drawEffect) | 
| -    : INHERITED(factory) | 
| -    , fEffectMatrix(drawEffect.castEffect<GrTextureDomainEffect>().coordsType()) { | 
| +                                                 const GrDrawEffect&) | 
| +    : INHERITED(factory) { | 
| fPrevDomain[0] = SK_FloatNaN; | 
| } | 
|  | 
| @@ -47,18 +45,18 @@ void GrGLTextureDomainEffect::emitCode(GrGLShaderBuilder* builder, | 
| EffectKey key, | 
| const char* outputColor, | 
| const char* inputColor, | 
| +                                       const TransformedCoordsArray& coords, | 
| const TextureSamplerArray& samplers) { | 
| const GrTextureDomainEffect& texDom = drawEffect.castEffect<GrTextureDomainEffect>(); | 
|  | 
| -    SkString coords; | 
| -    fEffectMatrix.emitCodeMakeFSCoords2D(builder, key, &coords); | 
| +    SkString coords2D = builder->ensureFSCoords2D(coords, 0); | 
| const char* domain; | 
| fNameUni = builder->addUniform(GrGLShaderBuilder::kFragment_Visibility, | 
| kVec4f_GrSLType, "TexDom", &domain); | 
| if (GrTextureDomainEffect::kClamp_WrapMode == texDom.wrapMode()) { | 
|  | 
| builder->fsCodeAppendf("\tvec2 clampCoord = clamp(%s, %s.xy, %s.zw);\n", | 
| -                                coords.c_str(), domain, domain); | 
| +                                coords2D.c_str(), domain, domain); | 
|  | 
| builder->fsCodeAppendf("\t%s = ", outputColor); | 
| builder->fsAppendTextureLookupAndModulate(inputColor, samplers[0], "clampCoord"); | 
| @@ -75,21 +73,21 @@ void GrGLTextureDomainEffect::emitCode(GrGLShaderBuilder* builder, | 
| // result=white;" code fails to compile. | 
| builder->fsCodeAppend("\tvec4 outside = vec4(0.0, 0.0, 0.0, 0.0);\n"); | 
| builder->fsCodeAppend("\tvec4 inside = "); | 
| -            builder->fsAppendTextureLookupAndModulate(inputColor, samplers[0], coords.c_str()); | 
| +            builder->fsAppendTextureLookupAndModulate(inputColor, samplers[0], coords2D.c_str()); | 
| builder->fsCodeAppend(";\n"); | 
|  | 
| builder->fsCodeAppendf("\tfloat x = abs(2.0*(%s.x - %s.x)/(%s.z - %s.x) - 1.0);\n", | 
| -                                   coords.c_str(), domain, domain, domain); | 
| +                                   coords2D.c_str(), domain, domain, domain); | 
| builder->fsCodeAppendf("\tfloat y = abs(2.0*(%s.y - %s.y)/(%s.w - %s.y) - 1.0);\n", | 
| -                                   coords.c_str(), domain, domain, domain); | 
| +                                   coords2D.c_str(), domain, domain, domain); | 
| builder->fsCodeAppend("\tfloat blend = step(1.0, max(x, y));\n"); | 
| builder->fsCodeAppendf("\t%s = mix(inside, outside, blend);\n", outputColor); | 
| } else { | 
| builder->fsCodeAppend("\tbvec4 outside;\n"); | 
| -            builder->fsCodeAppendf("\toutside.xy = lessThan(%s, %s.xy);\n", coords.c_str(), domain); | 
| -            builder->fsCodeAppendf("\toutside.zw = greaterThan(%s, %s.zw);\n", coords.c_str(), domain); | 
| +            builder->fsCodeAppendf("\toutside.xy = lessThan(%s, %s.xy);\n", coords2D.c_str(), domain); | 
| +            builder->fsCodeAppendf("\toutside.zw = greaterThan(%s, %s.zw);\n", coords2D.c_str(), domain); | 
| builder->fsCodeAppendf("\t%s = any(outside) ? vec4(0.0, 0.0, 0.0, 0.0) : ", outputColor); | 
| -            builder->fsAppendTextureLookupAndModulate(inputColor, samplers[0], coords.c_str()); | 
| +            builder->fsAppendTextureLookupAndModulate(inputColor, samplers[0], coords2D.c_str()); | 
| builder->fsCodeAppend(";\n"); | 
| } | 
| } | 
| @@ -118,22 +116,11 @@ void GrGLTextureDomainEffect::setData(const GrGLUniformManager& uman, | 
| uman.set4fv(fNameUni, 0, 1, values); | 
| memcpy(fPrevDomain, values, 4 * sizeof(GrGLfloat)); | 
| } | 
| -    fEffectMatrix.setData(uman, | 
| -                          texDom.getMatrix(), | 
| -                          drawEffect, | 
| -                          texDom.texture(0)); | 
| } | 
|  | 
| GrGLEffect::EffectKey GrGLTextureDomainEffect::GenKey(const GrDrawEffect& drawEffect, | 
| const GrGLCaps&) { | 
| -    const GrTextureDomainEffect& texDom = drawEffect.castEffect<GrTextureDomainEffect>(); | 
| -    EffectKey key = texDom.wrapMode(); | 
| -    key <<= GrGLEffectMatrix::kKeyBits; | 
| -    EffectKey matrixKey = GrGLEffectMatrix::GenKey(texDom.getMatrix(), | 
| -                                                   drawEffect, | 
| -                                                   texDom.coordsType(), | 
| -                                                   texDom.texture(0)); | 
| -    return key | matrixKey; | 
| +    return drawEffect.castEffect<GrTextureDomainEffect>().wrapMode(); | 
| } | 
|  | 
|  | 
| @@ -144,7 +131,7 @@ GrEffectRef* GrTextureDomainEffect::Create(GrTexture* texture, | 
| const SkRect& domain, | 
| WrapMode wrapMode, | 
| GrTextureParams::FilterMode filterMode, | 
| -                                           CoordsType coordsType) { | 
| +                                           GrCoordSet coordSet) { | 
| static const SkRect kFullRect = {0, 0, SK_Scalar1, SK_Scalar1}; | 
| if (kClamp_WrapMode == wrapMode && domain.contains(kFullRect)) { | 
| return GrSimpleTextureEffect::Create(texture, matrix, filterMode); | 
| @@ -167,7 +154,7 @@ GrEffectRef* GrTextureDomainEffect::Create(GrTexture* texture, | 
| clippedDomain, | 
| wrapMode, | 
| filterMode, | 
| -                                                                  coordsType))); | 
| +                                                                  coordSet))); | 
| return CreateEffectRef(effect); | 
|  | 
| } | 
| @@ -178,8 +165,8 @@ GrTextureDomainEffect::GrTextureDomainEffect(GrTexture* texture, | 
| const SkRect& domain, | 
| WrapMode wrapMode, | 
| GrTextureParams::FilterMode filterMode, | 
| -                                             CoordsType coordsType) | 
| -    : GrSingleTextureEffect(texture, matrix, filterMode, coordsType) | 
| +                                             GrCoordSet coordSet) | 
| +    : GrSingleTextureEffect(texture, matrix, filterMode, coordSet) | 
| , fWrapMode(wrapMode) | 
| , fTextureDomain(domain) { | 
| } | 
| @@ -194,7 +181,7 @@ const GrBackendEffectFactory& GrTextureDomainEffect::getFactory() const { | 
|  | 
| bool GrTextureDomainEffect::onIsEqual(const GrEffect& sBase) const { | 
| const GrTextureDomainEffect& s = CastEffect<GrTextureDomainEffect>(sBase); | 
| -    return this->hasSameTextureParamsMatrixAndCoordsType(s) && | 
| +    return this->hasSameTextureParamsMatrixAndSourceCoords(s) && | 
| this->fTextureDomain == s.fTextureDomain; | 
| } | 
|  | 
| @@ -224,7 +211,7 @@ GrEffectRef* GrTextureDomainEffect::TestCreate(SkRandom* random, | 
| WrapMode wrapMode = random->nextBool() ? kClamp_WrapMode : kDecal_WrapMode; | 
| const SkMatrix& matrix = GrEffectUnitTest::TestMatrix(random); | 
| bool bilerp = random->nextBool(); | 
| -    CoordsType coords = random->nextBool() ? kLocal_CoordsType : kPosition_CoordsType; | 
| +    GrCoordSet coords = random->nextBool() ? kLocal_GrCoordSet : kPosition_GrCoordSet; | 
| return GrTextureDomainEffect::Create(textures[texIdx], | 
| matrix, | 
| domain, | 
|  |