diff options
author | 2017-07-26 19:07:15 -0400 | |
---|---|---|
committer | 2017-07-26 23:31:30 +0000 | |
commit | 6cd51b51d6603a3100b147c45f38697f2f199fc6 (patch) | |
tree | 55d6bebf39125e0cdb0cd30c4fb6f8489428931a /src/effects | |
parent | 7f97f49a840c92e26058034c631e8d76a54897bd (diff) |
Remove GrSingleTextureEffect
Change-Id: I510cc0657f9433b206dc2ab643fa557667263294
Reviewed-on: https://skia-review.googlesource.com/27180
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/SkLightingImageFilter.cpp | 20 | ||||
-rw-r--r-- | src/effects/SkMagnifierImageFilter.cpp | 30 | ||||
-rw-r--r-- | src/effects/SkMorphologyImageFilter.cpp | 6 |
3 files changed, 39 insertions, 17 deletions
diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp index 58064ceea9..212240669d 100644 --- a/src/effects/SkLightingImageFilter.cpp +++ b/src/effects/SkLightingImageFilter.cpp @@ -25,7 +25,6 @@ #include "GrTextureProxy.h" #include "SkGr.h" -#include "effects/GrSingleTextureEffect.h" #include "effects/GrTextureDomain.h" #include "glsl/GrGLSLFragmentProcessor.h" #include "glsl/GrGLSLFragmentShaderBuilder.h" @@ -593,7 +592,7 @@ private: #if SK_SUPPORT_GPU -class GrLightingEffect : public GrSingleTextureEffect { +class GrLightingEffect : public GrFragmentProcessor { public: ~GrLightingEffect() override; @@ -611,13 +610,15 @@ protected: bool onIsEqual(const GrFragmentProcessor&) const override; private: + GrCoordTransform fCoordTransform; + GrTextureDomain fDomain; + TextureSampler fTextureSampler; const SkImageFilterLight* fLight; SkScalar fSurfaceScale; SkMatrix fFilterMatrix; BoundaryMode fBoundaryMode; - GrTextureDomain fDomain; - typedef GrSingleTextureEffect INHERITED; + typedef GrFragmentProcessor INHERITED; }; class GrDiffuseLightingEffect : public GrLightingEffect { @@ -1685,12 +1686,17 @@ GrLightingEffect::GrLightingEffect(sk_sp<GrTextureProxy> proxy, BoundaryMode boundaryMode, const SkIRect* srcBounds) // Perhaps this could advertise the opaque or coverage-as-alpha optimizations? - : INHERITED(kNone_OptimizationFlags, proxy, nullptr, SkMatrix::I()) + : INHERITED(kNone_OptimizationFlags) + , fCoordTransform(proxy.get()) + , fDomain(create_domain(proxy.get(), srcBounds, GrTextureDomain::kDecal_Mode)) + , fTextureSampler(std::move(proxy)) , fLight(light) , fSurfaceScale(surfaceScale) , fFilterMatrix(matrix) - , fBoundaryMode(boundaryMode) - , fDomain(create_domain(proxy.get(), srcBounds, GrTextureDomain::kDecal_Mode)) { + , fBoundaryMode(boundaryMode) { + this->initClassID<GrLightingEffect>(); + this->addCoordTransform(&fCoordTransform); + this->addTextureSampler(&fTextureSampler); fLight->ref(); } diff --git a/src/effects/SkMagnifierImageFilter.cpp b/src/effects/SkMagnifierImageFilter.cpp index b2c6714828..558e49071c 100644 --- a/src/effects/SkMagnifierImageFilter.cpp +++ b/src/effects/SkMagnifierImageFilter.cpp @@ -17,16 +17,16 @@ //////////////////////////////////////////////////////////////////////////////// #if SK_SUPPORT_GPU +#include "../private/GrGLSL.h" #include "GrContext.h" +#include "GrCoordTransform.h" #include "GrTexture.h" #include "effects/GrProxyMove.h" -#include "effects/GrSingleTextureEffect.h" #include "glsl/GrGLSLColorSpaceXformHelper.h" #include "glsl/GrGLSLFragmentProcessor.h" #include "glsl/GrGLSLFragmentShaderBuilder.h" #include "glsl/GrGLSLProgramDataManager.h" #include "glsl/GrGLSLUniformHandler.h" -#include "../private/GrGLSL.h" #endif sk_sp<SkImageFilter> SkMagnifierImageFilter::Make(const SkRect& srcRect, SkScalar inset, @@ -48,7 +48,7 @@ sk_sp<SkImageFilter> SkMagnifierImageFilter::Make(const SkRect& srcRect, SkScala } #if SK_SUPPORT_GPU -class GrMagnifierEffect : public GrSingleTextureEffect { +class GrMagnifierEffect : public GrFragmentProcessor { public: static sk_sp<GrFragmentProcessor> Make(sk_sp<GrTextureProxy> proxy, sk_sp<GrColorSpaceXform> colorSpaceXform, @@ -69,6 +69,14 @@ public: const char* name() const override { return "Magnifier"; } + SkString dumpInfo() const override { + SkString str; + str.appendf("Texture: %d", fTextureSampler.proxy()->uniqueID().asUInt()); + return str; + } + + const GrColorSpaceXform* colorSpaceXform() const { return fColorSpaceXform.get(); } + const SkIRect& bounds() const { return fBounds; } // Bounds of source image. const SkRect& srcRect() const { return fSrcRect; } @@ -89,10 +97,11 @@ private: float yInvZoom, float xInvInset, float yInvInset) - : INHERITED{ModulationFlags(proxy->config()), - GR_PROXY_MOVE(proxy), - std::move(colorSpaceXform), - SkMatrix::I()} // TODO: no GrSamplerParams::kBilerp_FilterMode? + : INHERITED{ModulateByConfigOptimizationFlags(proxy->config())} + // TODO: no GrSamplerParams::kBilerp_FilterMode? + , fCoordTransform(proxy.get()) + , fTextureSampler(std::move(proxy)) + , fColorSpaceXform(std::move(colorSpaceXform)) , fBounds(bounds) , fSrcRect(srcRect) , fXInvZoom(xInvZoom) @@ -100,6 +109,8 @@ private: , fXInvInset(xInvInset) , fYInvInset(yInvInset) { this->initClassID<GrMagnifierEffect>(); + this->addCoordTransform(&fCoordTransform); + this->addTextureSampler(&fTextureSampler); } GrGLSLFragmentProcessor* onCreateGLSLInstance() const override; @@ -110,6 +121,9 @@ private: GR_DECLARE_FRAGMENT_PROCESSOR_TEST + GrCoordTransform fCoordTransform; + TextureSampler fTextureSampler; + sk_sp<GrColorSpaceXform> fColorSpaceXform; SkIRect fBounds; SkRect fSrcRect; float fXInvZoom; @@ -117,7 +131,7 @@ private: float fXInvInset; float fYInvInset; - typedef GrSingleTextureEffect INHERITED; + typedef GrFragmentProcessor INHERITED; }; // For brevity diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp index 2cc224da99..e2e8dbacbc 100644 --- a/src/effects/SkMorphologyImageFilter.cpp +++ b/src/effects/SkMorphologyImageFilter.cpp @@ -326,7 +326,8 @@ GrMorphologyEffect::GrMorphologyEffect(sk_sp<GrTextureProxy> proxy, Direction direction, int radius, MorphologyType type) - : INHERITED{ModulationFlags(proxy->config()), GR_PROXY_MOVE(proxy), direction, radius} + : INHERITED{ModulateByConfigOptimizationFlags(proxy->config()), GR_PROXY_MOVE(proxy), + direction, radius} , fType(type) , fUseRange(false) { this->initClassID<GrMorphologyEffect>(); @@ -337,7 +338,8 @@ GrMorphologyEffect::GrMorphologyEffect(sk_sp<GrTextureProxy> proxy, int radius, MorphologyType type, const float range[2]) - : INHERITED{ModulationFlags(proxy->config()), GR_PROXY_MOVE(proxy), direction, radius} + : INHERITED{ModulateByConfigOptimizationFlags(proxy->config()), GR_PROXY_MOVE(proxy), + direction, radius} , fType(type) , fUseRange(true) { this->initClassID<GrMorphologyEffect>(); |