From eb2a6761654307e8aeeeaabdd63c6bf9ab0411e9 Mon Sep 17 00:00:00 2001 From: joshualitt Date: Thu, 4 Dec 2014 11:35:33 -0800 Subject: Remove backend factories BUG=skia: Review URL: https://codereview.chromium.org/778453002 --- src/gpu/effects/GrDashingEffect.cpp | 59 +++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 25 deletions(-) (limited to 'src/gpu/effects/GrDashingEffect.cpp') diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp index fec1551ef5..be1b5e5bb4 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::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(); 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::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(); fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVertexAttribType)); fInCoord = &this->addVertexAttrib(GrAttribute("inCoord", kVec2f_GrVertexAttribType)); SkScalar onLen = info.fIntervals[0]; -- cgit v1.2.3