| Index: src/effects/gradients/SkTwoPointRadialGradient.cpp | 
| diff --git a/src/effects/gradients/SkTwoPointRadialGradient.cpp b/src/effects/gradients/SkTwoPointRadialGradient.cpp | 
| index 8ce3f435b77d34ad4fb40f84b3bda534c76bd742..2783112cb8065f049a730ecb63d0ab06e2587cf7 100644 | 
| --- a/src/effects/gradients/SkTwoPointRadialGradient.cpp | 
| +++ b/src/effects/gradients/SkTwoPointRadialGradient.cpp | 
| @@ -386,9 +386,8 @@ void SkTwoPointRadialGradient::init() { | 
|  | 
| #if SK_SUPPORT_GPU | 
|  | 
| -#include "GrTBackendProcessorFactory.h" | 
| -#include "gl/builders/GrGLProgramBuilder.h" | 
| #include "SkGr.h" | 
| +#include "gl/builders/GrGLProgramBuilder.h" | 
|  | 
| // For brevity | 
| typedef GrGLProgramDataManager::UniformHandle UniformHandle; | 
| @@ -397,7 +396,7 @@ class GrGLRadial2Gradient : public GrGLGradientEffect { | 
|  | 
| public: | 
|  | 
| -    GrGLRadial2Gradient(const GrBackendProcessorFactory& factory, const GrProcessor&); | 
| +    GrGLRadial2Gradient(const GrProcessor&); | 
| virtual ~GrGLRadial2Gradient() { } | 
|  | 
| virtual void emitCode(GrGLFPBuilder*, | 
| @@ -447,9 +446,15 @@ public: | 
|  | 
| virtual ~GrRadial2Gradient() { } | 
|  | 
| -    static const char* Name() { return "Two-Point Radial Gradient"; } | 
| -    virtual const GrBackendFragmentProcessorFactory& getFactory() const SK_OVERRIDE { | 
| -        return GrTBackendFragmentProcessorFactory<GrRadial2Gradient>::getInstance(); | 
| +    virtual const char* name() const SK_OVERRIDE { return "Two-Point Radial Gradient"; } | 
| + | 
| +    virtual void getGLProcessorKey(const GrGLCaps& caps, | 
| +                                   GrProcessorKeyBuilder* b) const SK_OVERRIDE { | 
| +        GrGLRadial2Gradient::GenKey(*this, caps, b); | 
| +    } | 
| + | 
| +    virtual GrGLFragmentProcessor* createGLInstance() const SK_OVERRIDE { | 
| +        return SkNEW_ARGS(GrGLRadial2Gradient, (*this)); | 
| } | 
|  | 
| // The radial gradient parameters can collapse to a linear (instead of quadratic) equation. | 
| @@ -458,8 +463,6 @@ public: | 
| SkScalar radius() const { return fRadius0; } | 
| bool isPosRoot() const { return SkToBool(fPosRoot); } | 
|  | 
| -    typedef GrGLRadial2Gradient GLProcessor; | 
| - | 
| private: | 
| virtual bool onIsEqual(const GrFragmentProcessor& sBase) const SK_OVERRIDE { | 
| const GrRadial2Gradient& s = sBase.cast<GrRadial2Gradient>(); | 
| @@ -477,6 +480,7 @@ private: | 
| , fCenterX1(shader.getCenterX1()) | 
| , fRadius0(shader.getStartRadius()) | 
| , fPosRoot(shader.getDiffRadius() < 0) { | 
| +        this->initClassID<GrRadial2Gradient>(); | 
| // We pass the linear part of the quadratic as a varying. | 
| //    float b = 2.0 * (fCenterX1 * x - fRadius0 * z) | 
| fBTransform = this->getCoordTransform(); | 
| @@ -542,10 +546,8 @@ GrFragmentProcessor* GrRadial2Gradient::TestCreate(SkRandom* random, | 
|  | 
| ///////////////////////////////////////////////////////////////////// | 
|  | 
| -GrGLRadial2Gradient::GrGLRadial2Gradient(const GrBackendProcessorFactory& factory, | 
| -                                         const GrProcessor& processor) | 
| -    : INHERITED(factory) | 
| -    , fVSVaryingName(NULL) | 
| +GrGLRadial2Gradient::GrGLRadial2Gradient(const GrProcessor& processor) | 
| +    : fVSVaryingName(NULL) | 
| , fFSVaryingName(NULL) | 
| , fCachedCenter(SK_ScalarMax) | 
| , fCachedRadius(-SK_ScalarMax) | 
| @@ -561,7 +563,7 @@ void GrGLRadial2Gradient::emitCode(GrGLFPBuilder* builder, | 
| const char* inputColor, | 
| const TransformedCoordsArray& coords, | 
| const TextureSamplerArray& samplers) { | 
| -    const GrGradientEffect& ge = fp.cast<GrGradientEffect>(); | 
| +    const GrRadial2Gradient& ge = fp.cast<GrRadial2Gradient>(); | 
| this->emitUniforms(builder, ge); | 
| fParamUni = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibility, | 
| kFloat_GrSLType, "Radial2FSParams", 6); | 
|  |