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)); |
} |
/////////////////////////////////////////////////////////////////////////////// |