| Index: src/gpu/effects/GrMatrixConvolutionEffect.cpp
 | 
| diff --git a/src/gpu/effects/GrMatrixConvolutionEffect.cpp b/src/gpu/effects/GrMatrixConvolutionEffect.cpp
 | 
| index 5fb694b0d752e1e975b5f508d4ff82b0f66427e8..8867ab9dba80a84229b019be6cec96697d330657 100644
 | 
| --- a/src/gpu/effects/GrMatrixConvolutionEffect.cpp
 | 
| +++ b/src/gpu/effects/GrMatrixConvolutionEffect.cpp
 | 
| @@ -6,8 +6,9 @@
 | 
|   */
 | 
|  #include "GrMatrixConvolutionEffect.h"
 | 
|  #include "glsl/GrGLSLFragmentProcessor.h"
 | 
| -#include "glsl/GrGLSLProgramBuilder.h"
 | 
| +#include "glsl/GrGLSLFragmentShaderBuilder.h"
 | 
|  #include "glsl/GrGLSLProgramDataManager.h"
 | 
| +#include "glsl/GrGLSLUniformHandler.h"
 | 
|  
 | 
|  class GrGLMatrixConvolutionEffect : public GrGLSLFragmentProcessor {
 | 
|  public:
 | 
| @@ -42,25 +43,27 @@ GrGLMatrixConvolutionEffect::GrGLMatrixConvolutionEffect(const GrProcessor& proc
 | 
|  
 | 
|  void GrGLMatrixConvolutionEffect::emitCode(EmitArgs& args) {
 | 
|      const GrTextureDomain& domain = args.fFp.cast<GrMatrixConvolutionEffect>().domain();
 | 
| -    fImageIncrementUni = args.fBuilder->addUniform(GrGLSLProgramBuilder::kFragment_Visibility,
 | 
| -                                             kVec2f_GrSLType, kDefault_GrSLPrecision,
 | 
| -                                             "ImageIncrement");
 | 
| -    fKernelUni = args.fBuilder->addUniformArray(GrGLSLProgramBuilder::kFragment_Visibility,
 | 
| -                                          kFloat_GrSLType, kDefault_GrSLPrecision,
 | 
| -                                          "Kernel",
 | 
| -                                          fKernelSize.width() * fKernelSize.height());
 | 
| -    fKernelOffsetUni = args.fBuilder->addUniform(GrGLSLProgramBuilder::kFragment_Visibility,
 | 
| -                                           kVec2f_GrSLType, kDefault_GrSLPrecision, "KernelOffset");
 | 
| -    fGainUni = args.fBuilder->addUniform(GrGLSLProgramBuilder::kFragment_Visibility,
 | 
| -                                   kFloat_GrSLType, kDefault_GrSLPrecision, "Gain");
 | 
| -    fBiasUni = args.fBuilder->addUniform(GrGLSLProgramBuilder::kFragment_Visibility,
 | 
| -                                   kFloat_GrSLType, kDefault_GrSLPrecision, "Bias");
 | 
| +    GrGLSLUniformHandler* uniformHandler = args.fUniformHandler;
 | 
| +    fImageIncrementUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visibility,
 | 
| +                                                    kVec2f_GrSLType, kDefault_GrSLPrecision,
 | 
| +                                                    "ImageIncrement");
 | 
| +    fKernelUni = uniformHandler->addUniformArray(GrGLSLUniformHandler::kFragment_Visibility,
 | 
| +                                                 kFloat_GrSLType, kDefault_GrSLPrecision,
 | 
| +                                                 "Kernel",
 | 
| +                                                 fKernelSize.width() * fKernelSize.height());
 | 
| +    fKernelOffsetUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visibility,
 | 
| +                                                  kVec2f_GrSLType, kDefault_GrSLPrecision,
 | 
| +                                                  "KernelOffset");
 | 
| +    fGainUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visibility,
 | 
| +                                          kFloat_GrSLType, kDefault_GrSLPrecision, "Gain");
 | 
| +    fBiasUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visibility,
 | 
| +                                          kFloat_GrSLType, kDefault_GrSLPrecision, "Bias");
 | 
|  
 | 
| -    const char* kernelOffset = args.fBuilder->getUniformCStr(fKernelOffsetUni);
 | 
| -    const char* imgInc = args.fBuilder->getUniformCStr(fImageIncrementUni);
 | 
| -    const char* kernel = args.fBuilder->getUniformCStr(fKernelUni);
 | 
| -    const char* gain = args.fBuilder->getUniformCStr(fGainUni);
 | 
| -    const char* bias = args.fBuilder->getUniformCStr(fBiasUni);
 | 
| +    const char* kernelOffset = uniformHandler->getUniformCStr(fKernelOffsetUni);
 | 
| +    const char* imgInc = uniformHandler->getUniformCStr(fImageIncrementUni);
 | 
| +    const char* kernel = uniformHandler->getUniformCStr(fKernelUni);
 | 
| +    const char* gain = uniformHandler->getUniformCStr(fGainUni);
 | 
| +    const char* bias = uniformHandler->getUniformCStr(fBiasUni);
 | 
|      int kWidth = fKernelSize.width();
 | 
|      int kHeight = fKernelSize.height();
 | 
|  
 | 
| @@ -77,6 +80,7 @@ void GrGLMatrixConvolutionEffect::emitCode(EmitArgs& args) {
 | 
|              SkString coord;
 | 
|              coord.printf("coord + vec2(%d, %d) * %s", x, y, imgInc);
 | 
|              fDomain.sampleTexture(fragBuilder,
 | 
| +                                  uniformHandler,
 | 
|                                    args.fGLSLCaps,
 | 
|                                    domain,
 | 
|                                    "c",
 | 
| @@ -95,6 +99,7 @@ void GrGLMatrixConvolutionEffect::emitCode(EmitArgs& args) {
 | 
|                                   args.fOutputColor, args.fOutputColor, args.fOutputColor);
 | 
|      } else {
 | 
|          fDomain.sampleTexture(fragBuilder,
 | 
| +                              uniformHandler,
 | 
|                                args.fGLSLCaps,
 | 
|                                domain,
 | 
|                                "c",
 | 
| 
 |