| Index: src/effects/SkLightingImageFilter.cpp
 | 
| diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp
 | 
| index 3cac4fc05413917c4404414a41a157ea5a6ac20a..a30955faf7f7a1561549eabe415b6b1d34bc14be 100644
 | 
| --- a/src/effects/SkLightingImageFilter.cpp
 | 
| +++ b/src/effects/SkLightingImageFilter.cpp
 | 
| @@ -1514,12 +1514,7 @@ public:
 | 
|      GrGLLightingEffect(const GrProcessor&);
 | 
|      virtual ~GrGLLightingEffect();
 | 
|  
 | 
| -    void emitCode(GrGLFPBuilder*,
 | 
| -                  const GrFragmentProcessor&,
 | 
| -                  const char* outputColor,
 | 
| -                  const char* inputColor,
 | 
| -                  const TransformedCoordsArray&,
 | 
| -                  const TextureSamplerArray&) override;
 | 
| +    void emitCode(EmitArgs&) override;
 | 
|  
 | 
|      static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProcessorKeyBuilder* b);
 | 
|  
 | 
| @@ -1656,21 +1651,16 @@ GrGLLightingEffect::~GrGLLightingEffect() {
 | 
|      delete fLight;
 | 
|  }
 | 
|  
 | 
| -void GrGLLightingEffect::emitCode(GrGLFPBuilder* builder,
 | 
| -                                  const GrFragmentProcessor&,
 | 
| -                                  const char* outputColor,
 | 
| -                                  const char* inputColor,
 | 
| -                                  const TransformedCoordsArray& coords,
 | 
| -                                  const TextureSamplerArray& samplers) {
 | 
| -    fImageIncrementUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
 | 
| +void GrGLLightingEffect::emitCode(EmitArgs& args) {
 | 
| +    fImageIncrementUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
 | 
|                                                kVec2f_GrSLType, kDefault_GrSLPrecision,
 | 
|                                               "ImageIncrement");
 | 
| -    fSurfaceScaleUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
 | 
| +    fSurfaceScaleUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
 | 
|                                             kFloat_GrSLType, kDefault_GrSLPrecision,
 | 
|                                             "SurfaceScale");
 | 
| -    fLight->emitLightColorUniform(builder);
 | 
| +    fLight->emitLightColorUniform(args.fBuilder);
 | 
|      SkString lightFunc;
 | 
| -    this->emitLightFunc(builder, &lightFunc);
 | 
| +    this->emitLightFunc(args.fBuilder, &lightFunc);
 | 
|      static const GrGLShaderVar gSobelArgs[] =  {
 | 
|          GrGLShaderVar("a", kFloat_GrSLType),
 | 
|          GrGLShaderVar("b", kFloat_GrSLType),
 | 
| @@ -1681,8 +1671,8 @@ void GrGLLightingEffect::emitCode(GrGLFPBuilder* builder,
 | 
|          GrGLShaderVar("scale", kFloat_GrSLType),
 | 
|      };
 | 
|      SkString sobelFuncName;
 | 
| -    GrGLFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder();
 | 
| -    SkString coords2D = fsBuilder->ensureFSCoords2D(coords, 0);
 | 
| +    GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder();
 | 
| +    SkString coords2D = fsBuilder->ensureFSCoords2D(args.fCoords, 0);
 | 
|  
 | 
|      fsBuilder->emitFunction(kFloat_GrSLType,
 | 
|                              "sobel",
 | 
| @@ -1721,8 +1711,8 @@ void GrGLLightingEffect::emitCode(GrGLFPBuilder* builder,
 | 
|      fsBuilder->codeAppendf("\t\tvec2 coord = %s;\n", coords2D.c_str());
 | 
|      fsBuilder->codeAppend("\t\tfloat m[9];\n");
 | 
|  
 | 
| -    const char* imgInc = builder->getUniformCStr(fImageIncrementUni);
 | 
| -    const char* surfScale = builder->getUniformCStr(fSurfaceScaleUni);
 | 
| +    const char* imgInc = args.fBuilder->getUniformCStr(fImageIncrementUni);
 | 
| +    const char* surfScale = args.fBuilder->getUniformCStr(fSurfaceScaleUni);
 | 
|  
 | 
|      int index = 0;
 | 
|      for (int dy = 1; dy >= -1; dy--) {
 | 
| @@ -1730,21 +1720,21 @@ void GrGLLightingEffect::emitCode(GrGLFPBuilder* builder,
 | 
|              SkString texCoords;
 | 
|              texCoords.appendf("coord + vec2(%d, %d) * %s", dx, dy, imgInc);
 | 
|              fsBuilder->codeAppendf("\t\tm[%d] = ", index++);
 | 
| -            fsBuilder->appendTextureLookup(samplers[0], texCoords.c_str());
 | 
| +            fsBuilder->appendTextureLookup(args.fSamplers[0], texCoords.c_str());
 | 
|              fsBuilder->codeAppend(".a;\n");
 | 
|          }
 | 
|      }
 | 
|      fsBuilder->codeAppend("\t\tvec3 surfaceToLight = ");
 | 
|      SkString arg;
 | 
|      arg.appendf("%s * m[4]", surfScale);
 | 
| -    fLight->emitSurfaceToLight(builder, arg.c_str());
 | 
| +    fLight->emitSurfaceToLight(args.fBuilder, arg.c_str());
 | 
|      fsBuilder->codeAppend(";\n");
 | 
|      fsBuilder->codeAppendf("\t\t%s = %s(%s(m, %s), surfaceToLight, ",
 | 
| -                           outputColor, lightFunc.c_str(), normalName.c_str(), surfScale);
 | 
| -    fLight->emitLightColor(builder, "surfaceToLight");
 | 
| +                           args.fOutputColor, lightFunc.c_str(), normalName.c_str(), surfScale);
 | 
| +    fLight->emitLightColor(args.fBuilder, "surfaceToLight");
 | 
|      fsBuilder->codeAppend(");\n");
 | 
|      SkString modulate;
 | 
| -    GrGLSLMulVarBy4f(&modulate, outputColor, inputColor);
 | 
| +    GrGLSLMulVarBy4f(&modulate, args.fOutputColor, args.fInputColor);
 | 
|      fsBuilder->codeAppend(modulate.c_str());
 | 
|  }
 | 
|  
 | 
| 
 |