Index: src/gpu/effects/GrDashingEffect.cpp |
diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp |
index fec1551ef58196084934aafcb67701d1b36d9f57..be1b5e5bb421ea116b07a3bdb1c50bf26bbd5544 100644 |
--- a/src/gpu/effects/GrDashingEffect.cpp |
+++ b/src/gpu/effects/GrDashingEffect.cpp |
@@ -18,7 +18,6 @@ |
#include "GrInvariantOutput.h" |
#include "GrProcessor.h" |
#include "GrStrokeInfo.h" |
-#include "GrTBackendProcessorFactory.h" |
#include "SkGr.h" |
#include "gl/GrGLGeometryProcessor.h" |
#include "gl/GrGLProcessor.h" |
@@ -463,7 +462,7 @@ public: |
virtual ~DashingCircleEffect(); |
- static const char* Name() { return "DashingCircleEffect"; } |
+ virtual const char* name() const SK_OVERRIDE { return "DashingCircleEffect"; } |
const GrAttribute* inPosition() const { return fInPosition; } |
@@ -477,9 +476,11 @@ public: |
SkScalar getIntervalLength() const { return fIntervalLength; } |
- typedef GLDashingCircleEffect GLProcessor; |
+ virtual void getGLProcessorKey(const GrBatchTracker&, |
+ const GrGLCaps&, |
+ GrProcessorKeyBuilder* b) const SK_OVERRIDE; |
- virtual const GrBackendGeometryProcessorFactory& getFactory() const SK_OVERRIDE; |
+ virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker&) const SK_OVERRIDE; |
private: |
DashingCircleEffect(GrPrimitiveEdgeType edgeType, const DashInfo& info, SkScalar radius); |
@@ -504,9 +505,7 @@ private: |
class GLDashingCircleEffect : public GrGLGeometryProcessor { |
public: |
- GLDashingCircleEffect(const GrBackendProcessorFactory&, |
- const GrGeometryProcessor&, |
- const GrBatchTracker&); |
+ GLDashingCircleEffect(const GrGeometryProcessor&, const GrBatchTracker&); |
virtual void emitCode(const EmitArgs&) SK_OVERRIDE; |
@@ -527,10 +526,8 @@ private: |
typedef GrGLGeometryProcessor INHERITED; |
}; |
-GLDashingCircleEffect::GLDashingCircleEffect(const GrBackendProcessorFactory& factory, |
- const GrGeometryProcessor&, |
- const GrBatchTracker&) |
- : INHERITED (factory) { |
+GLDashingCircleEffect::GLDashingCircleEffect(const GrGeometryProcessor&, |
+ const GrBatchTracker&) { |
fPrevRadius = SK_ScalarMin; |
fPrevCenterX = SK_ScalarMin; |
fPrevIntervalLength = SK_ScalarMax; |
@@ -618,13 +615,20 @@ void DashingCircleEffect::onComputeInvariantOutput(GrInvariantOutput* inout) con |
inout->mulByUnknownAlpha(); |
} |
-const GrBackendGeometryProcessorFactory& DashingCircleEffect::getFactory() const { |
- return GrTBackendGeometryProcessorFactory<DashingCircleEffect>::getInstance(); |
+void DashingCircleEffect::getGLProcessorKey(const GrBatchTracker& bt, |
+ const GrGLCaps& caps, |
+ GrProcessorKeyBuilder* b) const { |
+ GLDashingCircleEffect::GenKey(*this, bt, caps, b); |
+} |
+ |
+GrGLGeometryProcessor* DashingCircleEffect::createGLInstance(const GrBatchTracker& bt) const { |
+ return SkNEW_ARGS(GLDashingCircleEffect, (*this, bt)); |
} |
DashingCircleEffect::DashingCircleEffect(GrPrimitiveEdgeType edgeType, const DashInfo& info, |
SkScalar radius) |
: fEdgeType(edgeType) { |
+ this->initClassID<DashingCircleEffect>(); |
fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVertexAttribType)); |
fInCoord = &this->addVertexAttrib(GrAttribute("inCoord", kVec2f_GrVertexAttribType)); |
SkScalar onLen = info.fIntervals[0]; |
@@ -685,7 +689,7 @@ public: |
virtual ~DashingLineEffect(); |
- static const char* Name() { return "DashingEffect"; } |
+ virtual const char* name() const SK_OVERRIDE { return "DashingEffect"; } |
const GrAttribute* inPosition() const { return fInPosition; } |
@@ -697,9 +701,11 @@ public: |
SkScalar getIntervalLength() const { return fIntervalLength; } |
- typedef GLDashingLineEffect GLProcessor; |
+ virtual void getGLProcessorKey(const GrBatchTracker& bt, |
+ const GrGLCaps& caps, |
+ GrProcessorKeyBuilder* b) const SK_OVERRIDE; |
- virtual const GrBackendGeometryProcessorFactory& getFactory() const SK_OVERRIDE; |
+ virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) const SK_OVERRIDE; |
private: |
DashingLineEffect(GrPrimitiveEdgeType edgeType, const DashInfo& info, SkScalar strokeWidth); |
@@ -723,9 +729,7 @@ private: |
class GLDashingLineEffect : public GrGLGeometryProcessor { |
public: |
- GLDashingLineEffect(const GrBackendProcessorFactory&, |
- const GrGeometryProcessor&, |
- const GrBatchTracker&); |
+ GLDashingLineEffect(const GrGeometryProcessor&, const GrBatchTracker&); |
virtual void emitCode(const EmitArgs&) SK_OVERRIDE; |
@@ -746,10 +750,8 @@ private: |
typedef GrGLGeometryProcessor INHERITED; |
}; |
-GLDashingLineEffect::GLDashingLineEffect(const GrBackendProcessorFactory& factory, |
- const GrGeometryProcessor&, |
- const GrBatchTracker&) |
- : INHERITED (factory) { |
+GLDashingLineEffect::GLDashingLineEffect(const GrGeometryProcessor&, |
+ const GrBatchTracker&) { |
fPrevRect.fLeft = SK_ScalarNaN; |
fPrevIntervalLength = SK_ScalarMax; |
} |
@@ -851,13 +853,20 @@ void DashingLineEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const |
inout->mulByUnknownAlpha(); |
} |
-const GrBackendGeometryProcessorFactory& DashingLineEffect::getFactory() const { |
- return GrTBackendGeometryProcessorFactory<DashingLineEffect>::getInstance(); |
+void DashingLineEffect::getGLProcessorKey(const GrBatchTracker& bt, |
+ const GrGLCaps& caps, |
+ GrProcessorKeyBuilder* b) const { |
+ GLDashingLineEffect::GenKey(*this, bt, caps, b); |
+} |
+ |
+GrGLGeometryProcessor* DashingLineEffect::createGLInstance(const GrBatchTracker& bt) const { |
+ return SkNEW_ARGS(GLDashingLineEffect, (*this, bt)); |
} |
DashingLineEffect::DashingLineEffect(GrPrimitiveEdgeType edgeType, const DashInfo& info, |
SkScalar strokeWidth) |
: fEdgeType(edgeType) { |
+ this->initClassID<DashingLineEffect>(); |
fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVertexAttribType)); |
fInCoord = &this->addVertexAttrib(GrAttribute("inCoord", kVec2f_GrVertexAttribType)); |
SkScalar onLen = info.fIntervals[0]; |