| Index: src/effects/SkMorphologyImageFilter.cpp
|
| diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp
|
| index fb8fd00081d2e1b407c98d89d7a6d005b819c93f..bfd367d59a99243ae5ba3d7686af7a71b74f9b66 100644
|
| --- a/src/effects/SkMorphologyImageFilter.cpp
|
| +++ b/src/effects/SkMorphologyImageFilter.cpp
|
| @@ -296,14 +296,14 @@ public:
|
|
|
| static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&);
|
|
|
| - virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE;
|
| + virtual void setData(const GrGLContext&, const GrDrawEffect&) SK_OVERRIDE;
|
|
|
| private:
|
| int width() const { return GrMorphologyEffect::WidthFromRadius(fRadius); }
|
|
|
| int fRadius;
|
| GrMorphologyEffect::MorphologyType fType;
|
| - GrGLUniformManager::UniformHandle fImageIncrementUni;
|
| + GrGLUniform* fImageIncrementUni;
|
| GrGLEffectMatrix fEffectMatrix;
|
|
|
| typedef GrGLEffect INHERITED;
|
| @@ -312,7 +312,7 @@ private:
|
| GrGLMorphologyEffect::GrGLMorphologyEffect(const GrBackendEffectFactory& factory,
|
| const GrDrawEffect& drawEffect)
|
| : INHERITED(factory)
|
| - , fImageIncrementUni(GrGLUniformManager::kInvalidUniformHandle)
|
| + , fImageIncrementUni(NULL)
|
| , fEffectMatrix(drawEffect.castEffect<GrMorphologyEffect>().coordsType()) {
|
| const GrMorphologyEffect& m = drawEffect.castEffect<GrMorphologyEffect>();
|
| fRadius = m.radius();
|
| @@ -327,8 +327,11 @@ void GrGLMorphologyEffect::emitCode(GrGLShaderBuilder* builder,
|
| const TextureSamplerArray& samplers) {
|
| const char* coords;
|
| fEffectMatrix.emitCodeMakeFSCoords2D(builder, key, &coords);
|
| - fImageIncrementUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| - kVec2f_GrSLType, "ImageIncrement");
|
| +
|
| + GrGLShaderBuilder::Uniform* imageIncrementUni =
|
| + builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| + kVec2f_GrSLType, "ImageIncrement");
|
| + fImageIncrementUni = imageIncrementUni->glUniform();
|
|
|
| const char* func;
|
| switch (fType) {
|
| @@ -345,14 +348,13 @@ void GrGLMorphologyEffect::emitCode(GrGLShaderBuilder* builder,
|
| func = ""; // suppress warning
|
| break;
|
| }
|
| - const char* imgInc = builder->getUniformCStr(fImageIncrementUni);
|
|
|
| - builder->fsCodeAppendf("\t\tvec2 coord = %s - %d.0 * %s;\n", coords, fRadius, imgInc);
|
| + builder->fsCodeAppendf("\t\tvec2 coord = %s - %d.0 * %s;\n", coords, fRadius, imageIncrementUni->c_str());
|
| builder->fsCodeAppendf("\t\tfor (int i = 0; i < %d; i++) {\n", this->width());
|
| builder->fsCodeAppendf("\t\t\t%s = %s(%s, ", outputColor, func, outputColor);
|
| builder->appendTextureLookup(GrGLShaderBuilder::kFragment_ShaderType, samplers[0], "coord");
|
| builder->fsCodeAppend(");\n");
|
| - builder->fsCodeAppendf("\t\t\tcoord += %s;\n", imgInc);
|
| + builder->fsCodeAppendf("\t\t\tcoord += %s;\n", imageIncrementUni->c_str());
|
| builder->fsCodeAppend("\t\t}\n");
|
| SkString modulate;
|
| GrGLSLMulVarBy4f(&modulate, 2, outputColor, inputColor);
|
| @@ -372,7 +374,7 @@ GrGLEffect::EffectKey GrGLMorphologyEffect::GenKey(const GrDrawEffect& drawEffec
|
| return key | matrixKey;
|
| }
|
|
|
| -void GrGLMorphologyEffect::setData(const GrGLUniformManager& uman,
|
| +void GrGLMorphologyEffect::setData(const GrGLContext& context,
|
| const GrDrawEffect& drawEffect) {
|
| const Gr1DKernelEffect& kern = drawEffect.castEffect<Gr1DKernelEffect>();
|
| GrTexture& texture = *kern.texture(0);
|
| @@ -389,8 +391,8 @@ void GrGLMorphologyEffect::setData(const GrGLUniformManager& uman,
|
| default:
|
| GrCrash("Unknown filter direction.");
|
| }
|
| - uman.set2fv(fImageIncrementUni, 0, 1, imageIncrement);
|
| - fEffectMatrix.setData(uman, kern.getMatrix(), drawEffect, kern.texture(0));
|
| + fImageIncrementUni->set2fv(context, 0, 1, imageIncrement);
|
| + fEffectMatrix.setData(context, kern.getMatrix(), drawEffect, kern.texture(0));
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|