| Index: src/effects/gradients/SkGradientShader.cpp
|
| diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp
|
| index de43b69a2f70b78c1b4e3f667f9c357f2cf52b28..4876989374c86692ac5b7f0816229ad0411d4e2a 100644
|
| --- a/src/effects/gradients/SkGradientShader.cpp
|
| +++ b/src/effects/gradients/SkGradientShader.cpp
|
| @@ -826,26 +826,29 @@ SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
|
| GrGLGradientEffect::GrGLGradientEffect(const GrBackendEffectFactory& factory)
|
| : INHERITED(factory)
|
| , fCachedYCoord(SK_ScalarMax)
|
| - , fFSYUni(GrGLUniformManager::kInvalidUniformHandle)
|
| + , fFSYUni(NULL)
|
| , fEffectMatrix(kCoordsType) {
|
| }
|
|
|
| GrGLGradientEffect::~GrGLGradientEffect() { }
|
|
|
| -void GrGLGradientEffect::emitYCoordUniform(GrGLShaderBuilder* builder) {
|
| - fFSYUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| - kFloat_GrSLType, "GradientYCoordFS");
|
| +GrGLShaderBuilder::Uniform* GrGLGradientEffect::emitYCoordUniform(GrGLShaderBuilder* builder) {
|
| + GrGLShaderBuilder::Uniform* fsYUni =
|
| + builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| + kFloat_GrSLType, "GradientYCoordFS");
|
| + fFSYUni = fsYUni->glUniform();
|
| + return fsYUni;
|
| }
|
|
|
| -void GrGLGradientEffect::setData(const GrGLUniformManager& uman,
|
| +void GrGLGradientEffect::setData(const GrGLContext& context,
|
| const GrDrawEffect& drawEffect) {
|
| const GrGradientEffect& e = drawEffect.castEffect<GrGradientEffect>();
|
| const GrTexture* texture = e.texture(0);
|
| - fEffectMatrix.setData(uman, e.getMatrix(), drawEffect, texture);
|
| + fEffectMatrix.setData(context, e.getMatrix(), drawEffect, texture);
|
|
|
| SkScalar yCoord = e.getYCoord();
|
| if (yCoord != fCachedYCoord) {
|
| - uman.set1f(fFSYUni, yCoord);
|
| + fFSYUni->set1f(context, yCoord);
|
| fCachedYCoord = yCoord;
|
| }
|
| }
|
| @@ -869,6 +872,7 @@ void GrGLGradientEffect::setupMatrix(GrGLShaderBuilder* builder,
|
| }
|
|
|
| void GrGLGradientEffect::emitColorLookup(GrGLShaderBuilder* builder,
|
| + GrGLShaderBuilder::Uniform* fsYUni,
|
| const char* gradientTValue,
|
| const char* outputColor,
|
| const char* inputColor,
|
| @@ -876,7 +880,7 @@ void GrGLGradientEffect::emitColorLookup(GrGLShaderBuilder* builder,
|
|
|
| builder->fsCodeAppendf("\tvec2 coord = vec2(%s, %s);\n",
|
| gradientTValue,
|
| - builder->getUniformVariable(fFSYUni).c_str());
|
| + fsYUni->c_str());
|
| builder->fsCodeAppendf("\t%s = ", outputColor);
|
| builder->appendTextureLookupAndModulate(GrGLShaderBuilder::kFragment_ShaderType,
|
| inputColor,
|
|
|