Index: src/gpu/effects/GrConvexPolyEffect.cpp |
diff --git a/src/gpu/effects/GrConvexPolyEffect.cpp b/src/gpu/effects/GrConvexPolyEffect.cpp |
index c2874e00451c45c9fe395c0c876031ba59832964..6f93fb5277fb878d35c98ad79f1d37c58ee36e7c 100644 |
--- a/src/gpu/effects/GrConvexPolyEffect.cpp |
+++ b/src/gpu/effects/GrConvexPolyEffect.cpp |
@@ -5,36 +5,34 @@ |
* found in the LICENSE file. |
*/ |
-#include "gl/builders/GrGLProgramBuilder.h" |
#include "GrConvexPolyEffect.h" |
#include "GrInvariantOutput.h" |
+#include "SkPath.h" |
#include "gl/GrGLProcessor.h" |
#include "gl/GrGLSL.h" |
-#include "GrTBackendProcessorFactory.h" |
- |
-#include "SkPath.h" |
+#include "gl/builders/GrGLProgramBuilder.h" |
////////////////////////////////////////////////////////////////////////////// |
-class GLAARectEffect; |
- |
class AARectEffect : public GrFragmentProcessor { |
public: |
- typedef GLAARectEffect GLProcessor; |
- |
const SkRect& getRect() const { return fRect; } |
- static const char* Name() { return "AARect"; } |
- |
static GrFragmentProcessor* Create(GrPrimitiveEdgeType edgeType, const SkRect& rect) { |
return SkNEW_ARGS(AARectEffect, (edgeType, rect)); |
} |
GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } |
- virtual const GrBackendFragmentProcessorFactory& getFactory() const SK_OVERRIDE; |
+ virtual const char* name() const SK_OVERRIDE { return "AARect"; } |
+ |
+ virtual void getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder*) const SK_OVERRIDE; |
+ |
+ virtual GrGLFragmentProcessor* createGLInstance() const SK_OVERRIDE; |
private: |
- AARectEffect(GrPrimitiveEdgeType edgeType, const SkRect& rect) : fRect(rect), fEdgeType(edgeType) { |
+ AARectEffect(GrPrimitiveEdgeType edgeType, const SkRect& rect) |
+ : fRect(rect), fEdgeType(edgeType) { |
+ this->initClassID<AARectEffect>(); |
this->setWillReadFragmentPosition(); |
} |
@@ -85,7 +83,7 @@ GrFragmentProcessor* AARectEffect::TestCreate(SkRandom* random, |
class GLAARectEffect : public GrGLFragmentProcessor { |
public: |
- GLAARectEffect(const GrBackendProcessorFactory&, const GrProcessor&); |
+ GLAARectEffect(const GrProcessor&); |
virtual void emitCode(GrGLFPBuilder* builder, |
const GrFragmentProcessor& fp, |
@@ -104,9 +102,7 @@ private: |
typedef GrGLFragmentProcessor INHERITED; |
}; |
-GLAARectEffect::GLAARectEffect(const GrBackendProcessorFactory& factory, |
- const GrProcessor& effect) |
- : INHERITED (factory) { |
+GLAARectEffect::GLAARectEffect(const GrProcessor& effect) { |
fPrevRect.fLeft = SK_ScalarNaN; |
} |
@@ -169,15 +165,19 @@ void GLAARectEffect::GenKey(const GrProcessor& processor, const GrGLCaps&, |
b->add32(aare.getEdgeType()); |
} |
-const GrBackendFragmentProcessorFactory& AARectEffect::getFactory() const { |
- return GrTBackendFragmentProcessorFactory<AARectEffect>::getInstance(); |
+void AARectEffect::getGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const { |
+ GLAARectEffect::GenKey(*this, caps, b); |
+} |
+ |
+GrGLFragmentProcessor* AARectEffect::createGLInstance() const { |
+ return SkNEW_ARGS(GLAARectEffect, (*this)); |
} |
////////////////////////////////////////////////////////////////////////////// |
class GrGLConvexPolyEffect : public GrGLFragmentProcessor { |
public: |
- GrGLConvexPolyEffect(const GrBackendProcessorFactory&, const GrProcessor&); |
+ GrGLConvexPolyEffect(const GrProcessor&); |
virtual void emitCode(GrGLFPBuilder* builder, |
const GrFragmentProcessor& fp, |
@@ -196,9 +196,7 @@ private: |
typedef GrGLFragmentProcessor INHERITED; |
}; |
-GrGLConvexPolyEffect::GrGLConvexPolyEffect(const GrBackendProcessorFactory& factory, |
- const GrProcessor&) |
- : INHERITED (factory) { |
+GrGLConvexPolyEffect::GrGLConvexPolyEffect(const GrProcessor&) { |
fPrevEdges[0] = SK_ScalarNaN; |
} |
@@ -326,13 +324,19 @@ void GrConvexPolyEffect::onComputeInvariantOutput(GrInvariantOutput* inout) cons |
inout->mulByUnknownAlpha(); |
} |
-const GrBackendFragmentProcessorFactory& GrConvexPolyEffect::getFactory() const { |
- return GrTBackendFragmentProcessorFactory<GrConvexPolyEffect>::getInstance(); |
+void GrConvexPolyEffect::getGLProcessorKey(const GrGLCaps& caps, |
+ GrProcessorKeyBuilder* b) const { |
+ GrGLConvexPolyEffect::GenKey(*this, caps, b); |
+} |
+ |
+GrGLFragmentProcessor* GrConvexPolyEffect::createGLInstance() const { |
+ return SkNEW_ARGS(GrGLConvexPolyEffect, (*this)); |
} |
GrConvexPolyEffect::GrConvexPolyEffect(GrPrimitiveEdgeType edgeType, int n, const SkScalar edges[]) |
: fEdgeType(edgeType) |
, fEdgeCount(n) { |
+ this->initClassID<GrConvexPolyEffect>(); |
// Factory function should have already ensured this. |
SkASSERT(n <= kMaxEdges); |
memcpy(fEdges, edges, 3 * n * sizeof(SkScalar)); |