aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/effects
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-07-26 12:21:21 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-26 16:57:39 +0000
commitfcc527b2c9f97a42a94b4236d5c2b4b1e43b38c2 (patch)
tree12e0a5f03385331802a03ee808e61486474b3c37 /src/gpu/effects
parente82a10bb183b5f7753aa67657c4e3a9375f297d2 (diff)
Implement clone for 4 additional GrFragmentProcessors.
GrConfigConversionEffect GrConstColorProcessor GrConvexPolyEffect AARectEffect Change-Id: I3b103ed045db0825fc193ee7d6e61c8fe8e5c634 Reviewed-on: https://skia-review.googlesource.com/26842 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/effects')
-rw-r--r--src/gpu/effects/GrConfigConversionEffect.cpp4
-rw-r--r--src/gpu/effects/GrConfigConversionEffect.h2
-rw-r--r--src/gpu/effects/GrConstColorProcessor.cpp2
-rw-r--r--src/gpu/effects/GrConstColorProcessor.h2
-rw-r--r--src/gpu/effects/GrConvexPolyEffect.cpp16
-rw-r--r--src/gpu/effects/GrConvexPolyEffect.h3
6 files changed, 28 insertions, 1 deletions
diff --git a/src/gpu/effects/GrConfigConversionEffect.cpp b/src/gpu/effects/GrConfigConversionEffect.cpp
index e8d04771f5..d83e82d8d9 100644
--- a/src/gpu/effects/GrConfigConversionEffect.cpp
+++ b/src/gpu/effects/GrConfigConversionEffect.cpp
@@ -70,6 +70,10 @@ GrConfigConversionEffect::GrConfigConversionEffect(PMConversion pmConversion)
this->initClassID<GrConfigConversionEffect>();
}
+sk_sp<GrFragmentProcessor> GrConfigConversionEffect::clone() const {
+ return sk_sp<GrFragmentProcessor>(new GrConfigConversionEffect(fPMConversion));
+}
+
bool GrConfigConversionEffect::onIsEqual(const GrFragmentProcessor& s) const {
const GrConfigConversionEffect& other = s.cast<GrConfigConversionEffect>();
return other.fPMConversion == fPMConversion;
diff --git a/src/gpu/effects/GrConfigConversionEffect.h b/src/gpu/effects/GrConfigConversionEffect.h
index f6bb7b1034..fe8f50bdf5 100644
--- a/src/gpu/effects/GrConfigConversionEffect.h
+++ b/src/gpu/effects/GrConfigConversionEffect.h
@@ -33,6 +33,8 @@ public:
const char* name() const override { return "Config Conversion"; }
+ sk_sp<GrFragmentProcessor> clone() const override;
+
PMConversion pmConversion() const { return fPMConversion; }
// This function determines whether it is possible to choose PM->UPM and UPM->PM conversions
diff --git a/src/gpu/effects/GrConstColorProcessor.cpp b/src/gpu/effects/GrConstColorProcessor.cpp
index 9f46712f29..d5f4e3527f 100644
--- a/src/gpu/effects/GrConstColorProcessor.cpp
+++ b/src/gpu/effects/GrConstColorProcessor.cpp
@@ -62,6 +62,8 @@ private:
///////////////////////////////////////////////////////////////////////////////
+sk_sp<GrFragmentProcessor> GrConstColorProcessor::clone() const { return Make(fColor, fMode); }
+
GrColor4f GrConstColorProcessor::constantOutputForConstantInput(GrColor4f input) const {
switch (fMode) {
case kIgnore_InputMode:
diff --git a/src/gpu/effects/GrConstColorProcessor.h b/src/gpu/effects/GrConstColorProcessor.h
index 1669f2b71e..baf405a8fe 100644
--- a/src/gpu/effects/GrConstColorProcessor.h
+++ b/src/gpu/effects/GrConstColorProcessor.h
@@ -38,6 +38,8 @@ public:
return str;
}
+ sk_sp<GrFragmentProcessor> clone() const override;
+
GrColor4f color() const { return fColor; }
InputMode inputMode() const { return fMode; }
diff --git a/src/gpu/effects/GrConvexPolyEffect.cpp b/src/gpu/effects/GrConvexPolyEffect.cpp
index fd01798d70..7dba3de04d 100644
--- a/src/gpu/effects/GrConvexPolyEffect.cpp
+++ b/src/gpu/effects/GrConvexPolyEffect.cpp
@@ -27,9 +27,11 @@ public:
const char* name() const override { return "AARect"; }
- void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
+ sk_sp<GrFragmentProcessor> clone() const override { return Make(fEdgeType, fRect); }
private:
+ void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
+
AARectEffect(GrPrimitiveEdgeType edgeType, const SkRect& rect)
: INHERITED(kCompatibleWithCoverageAsAlpha_OptimizationFlag)
, fRect(rect)
@@ -338,6 +340,18 @@ GrConvexPolyEffect::GrConvexPolyEffect(GrPrimitiveEdgeType edgeType, int n, cons
}
}
+GrConvexPolyEffect::GrConvexPolyEffect(const GrConvexPolyEffect& that)
+ : INHERITED(kCompatibleWithCoverageAsAlpha_OptimizationFlag)
+ , fEdgeType(that.fEdgeType)
+ , fEdgeCount(that.fEdgeCount) {
+ this->initClassID<GrConvexPolyEffect>();
+ memcpy(fEdges, that.fEdges, 3 * that.fEdgeCount * sizeof(SkScalar));
+}
+
+sk_sp<GrFragmentProcessor> GrConvexPolyEffect::clone() const {
+ return sk_sp<GrFragmentProcessor>(new GrConvexPolyEffect(*this));
+}
+
bool GrConvexPolyEffect::onIsEqual(const GrFragmentProcessor& other) const {
const GrConvexPolyEffect& cpe = other.cast<GrConvexPolyEffect>();
// ignore the fact that 0 == -0 and just use memcmp.
diff --git a/src/gpu/effects/GrConvexPolyEffect.h b/src/gpu/effects/GrConvexPolyEffect.h
index fa26fb4b72..f1f6ab0029 100644
--- a/src/gpu/effects/GrConvexPolyEffect.h
+++ b/src/gpu/effects/GrConvexPolyEffect.h
@@ -61,6 +61,8 @@ public:
const char* name() const override { return "ConvexPoly"; }
+ sk_sp<GrFragmentProcessor> clone() const override;
+
GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
int getEdgeCount() const { return fEdgeCount; }
@@ -69,6 +71,7 @@ public:
private:
GrConvexPolyEffect(GrPrimitiveEdgeType edgeType, int n, const SkScalar edges[]);
+ GrConvexPolyEffect(const GrConvexPolyEffect&);
GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;