diff options
author | 2015-08-18 11:29:31 -0700 | |
---|---|---|
committer | 2015-08-18 11:29:32 -0700 | |
commit | b1daa86732fe70aa4630c89d75ff0fd619d77c77 (patch) | |
tree | 9ddc71e82c682c42968343cfdbea68038c2ca11b /src/effects/SkMorphologyImageFilter.cpp | |
parent | 935d6cfaa78b6be75c9fcc596805f0f9b8da972e (diff) |
When getGLInstance is called on a frag proc, the resulting GrGLFragmentProcessor will be the root of a tree of GrGLFragmentProcessors that mirrors the GrFragmentProcessor's tree. This allows setData() to be called recursively (removing the responsibility from compose shader) and allows gl instances direct access to their children gl instances so they can emit their code.
BUG=skia:4182
Review URL: https://codereview.chromium.org/1287023009
Diffstat (limited to 'src/effects/SkMorphologyImageFilter.cpp')
-rw-r--r-- | src/effects/SkMorphologyImageFilter.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp index 163f9d975a..01e978e846 100644 --- a/src/effects/SkMorphologyImageFilter.cpp +++ b/src/effects/SkMorphologyImageFilter.cpp @@ -224,8 +224,6 @@ public: const char* name() const override { return "Morphology"; } - GrGLFragmentProcessor* createGLInstance() const override; - protected: MorphologyType fType; @@ -233,6 +231,8 @@ protected: float fRange[2]; private: + GrGLFragmentProcessor* onCreateGLInstance() const override; + void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const override; bool onIsEqual(const GrFragmentProcessor&) const override; @@ -258,7 +258,8 @@ public: static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProcessorKeyBuilder* b); - void setData(const GrGLProgramDataManager&, const GrProcessor&) override; +protected: + void onSetData(const GrGLProgramDataManager&, const GrProcessor&) override; private: int width() const { return GrMorphologyEffect::WidthFromRadius(fRadius); } @@ -359,7 +360,7 @@ void GrGLMorphologyEffect::GenKey(const GrProcessor& proc, b->add32(key); } -void GrGLMorphologyEffect::setData(const GrGLProgramDataManager& pdman, +void GrGLMorphologyEffect::onSetData(const GrGLProgramDataManager& pdman, const GrProcessor& proc) { const GrMorphologyEffect& m = proc.cast<GrMorphologyEffect>(); GrTexture& texture = *m.texture(0); @@ -423,7 +424,7 @@ void GrMorphologyEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, GrProcessor GrGLMorphologyEffect::GenKey(*this, caps, b); } -GrGLFragmentProcessor* GrMorphologyEffect::createGLInstance() const { +GrGLFragmentProcessor* GrMorphologyEffect::onCreateGLInstance() const { return SkNEW_ARGS(GrGLMorphologyEffect, (*this)); } bool GrMorphologyEffect::onIsEqual(const GrFragmentProcessor& sBase) const { |