aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-07-26 19:07:15 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-26 23:31:30 +0000
commit6cd51b51d6603a3100b147c45f38697f2f199fc6 (patch)
tree55d6bebf39125e0cdb0cd30c4fb6f8489428931a /src/effects
parent7f97f49a840c92e26058034c631e8d76a54897bd (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.cpp20
-rw-r--r--src/effects/SkMagnifierImageFilter.cpp30
-rw-r--r--src/effects/SkMorphologyImageFilter.cpp6
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>();