| Index: src/gpu/effects/GrConvexPolyEffect.cpp
 | 
| diff --git a/src/gpu/effects/GrConvexPolyEffect.cpp b/src/gpu/effects/GrConvexPolyEffect.cpp
 | 
| index 6ecba24c5f18eb6c22844a72d7daf135c5e1bc00..69c5862aa3b796fee47414b97b413a9e66db646f 100644
 | 
| --- a/src/gpu/effects/GrConvexPolyEffect.cpp
 | 
| +++ b/src/gpu/effects/GrConvexPolyEffect.cpp
 | 
| @@ -81,12 +81,7 @@ class GLAARectEffect : public GrGLFragmentProcessor {
 | 
|  public:
 | 
|      GLAARectEffect(const GrProcessor&);
 | 
|  
 | 
| -    virtual void emitCode(GrGLFPBuilder* builder,
 | 
| -                          const GrFragmentProcessor& fp,
 | 
| -                          const char* outputColor,
 | 
| -                          const char* inputColor,
 | 
| -                          const TransformedCoordsArray&,
 | 
| -                          const TextureSamplerArray&) override;
 | 
| +    virtual void emitCode(EmitArgs&) override;
 | 
|  
 | 
|      static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProcessorKeyBuilder*);
 | 
|  
 | 
| @@ -102,23 +97,18 @@ GLAARectEffect::GLAARectEffect(const GrProcessor& effect) {
 | 
|      fPrevRect.fLeft = SK_ScalarNaN;
 | 
|  }
 | 
|  
 | 
| -void GLAARectEffect::emitCode(GrGLFPBuilder* builder,
 | 
| -                              const GrFragmentProcessor& fp,
 | 
| -                              const char* outputColor,
 | 
| -                              const char* inputColor,
 | 
| -                              const TransformedCoordsArray&,
 | 
| -                              const TextureSamplerArray& samplers) {
 | 
| -    const AARectEffect& aare = fp.cast<AARectEffect>();
 | 
| +void GLAARectEffect::emitCode(EmitArgs& args) {
 | 
| +    const AARectEffect& aare = args.fFp.cast<AARectEffect>();
 | 
|      const char *rectName;
 | 
|      // The rect uniform's xyzw refer to (left + 0.5, top + 0.5, right - 0.5, bottom - 0.5),
 | 
|      // respectively.
 | 
| -    fRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
 | 
| +    fRectUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
 | 
|                                         kVec4f_GrSLType,
 | 
|                                         kDefault_GrSLPrecision,
 | 
|                                         "rect",
 | 
|                                         &rectName);
 | 
|  
 | 
| -    GrGLFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder();
 | 
| +    GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder();
 | 
|      const char* fragmentPos = fsBuilder->fragmentPosition();
 | 
|      if (GrProcessorEdgeTypeIsAA(aare.getEdgeType())) {
 | 
|          // The amount of coverage removed in x and y by the edges is computed as a pair of negative
 | 
| @@ -142,8 +132,8 @@ void GLAARectEffect::emitCode(GrGLFPBuilder* builder,
 | 
|      if (GrProcessorEdgeTypeIsInverseFill(aare.getEdgeType())) {
 | 
|          fsBuilder->codeAppend("\t\talpha = 1.0 - alpha;\n");
 | 
|      }
 | 
| -    fsBuilder->codeAppendf("\t\t%s = %s;\n", outputColor,
 | 
| -                           (GrGLSLExpr4(inputColor) * GrGLSLExpr1("alpha")).c_str());
 | 
| +    fsBuilder->codeAppendf("\t\t%s = %s;\n", args.fOutputColor,
 | 
| +                           (GrGLSLExpr4(args.fInputColor) * GrGLSLExpr1("alpha")).c_str());
 | 
|  }
 | 
|  
 | 
|  void GLAARectEffect::setData(const GrGLProgramDataManager& pdman, const GrProcessor& processor) {
 | 
| @@ -176,12 +166,7 @@ class GrGLConvexPolyEffect : public GrGLFragmentProcessor {
 | 
|  public:
 | 
|      GrGLConvexPolyEffect(const GrProcessor&);
 | 
|  
 | 
| -    virtual void emitCode(GrGLFPBuilder* builder,
 | 
| -                          const GrFragmentProcessor& fp,
 | 
| -                          const char* outputColor,
 | 
| -                          const char* inputColor,
 | 
| -                          const TransformedCoordsArray&,
 | 
| -                          const TextureSamplerArray&) override;
 | 
| +    virtual void emitCode(EmitArgs&) override;
 | 
|  
 | 
|      static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProcessorKeyBuilder*);
 | 
|  
 | 
| @@ -197,22 +182,17 @@ GrGLConvexPolyEffect::GrGLConvexPolyEffect(const GrProcessor&) {
 | 
|      fPrevEdges[0] = SK_ScalarNaN;
 | 
|  }
 | 
|  
 | 
| -void GrGLConvexPolyEffect::emitCode(GrGLFPBuilder* builder,
 | 
| -                                    const GrFragmentProcessor& fp,
 | 
| -                                    const char* outputColor,
 | 
| -                                    const char* inputColor,
 | 
| -                                    const TransformedCoordsArray&,
 | 
| -                                    const TextureSamplerArray& samplers) {
 | 
| -    const GrConvexPolyEffect& cpe = fp.cast<GrConvexPolyEffect>();
 | 
| +void GrGLConvexPolyEffect::emitCode(EmitArgs& args) {
 | 
| +    const GrConvexPolyEffect& cpe = args.fFp.cast<GrConvexPolyEffect>();
 | 
|  
 | 
|      const char *edgeArrayName;
 | 
| -    fEdgeUniform = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibility,
 | 
| +    fEdgeUniform = args.fBuilder->addUniformArray(GrGLProgramBuilder::kFragment_Visibility,
 | 
|                                              kVec3f_GrSLType,
 | 
|                                               kDefault_GrSLPrecision,
 | 
|                                               "edges",
 | 
|                                              cpe.getEdgeCount(),
 | 
|                                              &edgeArrayName);
 | 
| -    GrGLFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder();
 | 
| +    GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder();
 | 
|      fsBuilder->codeAppend("\t\tfloat alpha = 1.0;\n");
 | 
|      fsBuilder->codeAppend("\t\tfloat edge;\n");
 | 
|      const char* fragmentPos = fsBuilder->fragmentPosition();
 | 
| @@ -228,15 +208,15 @@ void GrGLConvexPolyEffect::emitCode(GrGLFPBuilder* builder,
 | 
|      }
 | 
|  
 | 
|      // Woe is me. See skbug.com/2149.
 | 
| -    if (kTegra2_GrGLRenderer == builder->ctxInfo().renderer()) {
 | 
| +    if (kTegra2_GrGLRenderer == args.fBuilder->ctxInfo().renderer()) {
 | 
|          fsBuilder->codeAppend("\t\tif (-1.0 == alpha) {\n\t\t\tdiscard;\n\t\t}\n");
 | 
|      }
 | 
|  
 | 
|      if (GrProcessorEdgeTypeIsInverseFill(cpe.getEdgeType())) {
 | 
|          fsBuilder->codeAppend("\talpha = 1.0 - alpha;\n");
 | 
|      }
 | 
| -    fsBuilder->codeAppendf("\t%s = %s;\n", outputColor,
 | 
| -                           (GrGLSLExpr4(inputColor) * GrGLSLExpr1("alpha")).c_str());
 | 
| +    fsBuilder->codeAppendf("\t%s = %s;\n", args.fOutputColor,
 | 
| +                           (GrGLSLExpr4(args.fInputColor) * GrGLSLExpr1("alpha")).c_str());
 | 
|  }
 | 
|  
 | 
|  void GrGLConvexPolyEffect::setData(const GrGLProgramDataManager& pdman, const GrProcessor& effect) {
 | 
| 
 |