| Index: src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| diff --git a/src/gpu/effects/GrDistanceFieldTextureEffect.cpp b/src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| index 53f85907e42fe6bac2fa2b3e9db6279ddb147ede..f1f4a9fbb109ac53746c456c25ff43aad2344db6 100755
|
| --- a/src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| +++ b/src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| @@ -7,26 +7,22 @@
|
|
|
| #include "GrDistanceFieldTextureEffect.h"
|
| #include "GrInvariantOutput.h"
|
| -#include "gl/builders/GrGLProgramBuilder.h"
|
| +#include "GrTexture.h"
|
| +#include "SkDistanceFieldGen.h"
|
| #include "gl/GrGLProcessor.h"
|
| #include "gl/GrGLSL.h"
|
| #include "gl/GrGLTexture.h"
|
| #include "gl/GrGLGeometryProcessor.h"
|
| -#include "GrTBackendProcessorFactory.h"
|
| -#include "GrTexture.h"
|
| -
|
| -#include "SkDistanceFieldGen.h"
|
| +#include "gl/builders/GrGLProgramBuilder.h"
|
|
|
| // Assuming a radius of the diagonal of the fragment, hence a factor of sqrt(2)/2
|
| #define SK_DistanceFieldAAFactor "0.7071"
|
|
|
| class GrGLDistanceFieldTextureEffect : public GrGLGeometryProcessor {
|
| public:
|
| - GrGLDistanceFieldTextureEffect(const GrBackendProcessorFactory& factory,
|
| - const GrGeometryProcessor&,
|
| + GrGLDistanceFieldTextureEffect(const GrGeometryProcessor&,
|
| const GrBatchTracker&)
|
| - : INHERITED (factory)
|
| - , fTextureSize(SkISize::Make(-1,-1))
|
| + : fTextureSize(SkISize::Make(-1,-1))
|
| #ifdef SK_GAMMA_APPLY_TO_A8
|
| , fLuminance(-1.0f)
|
| #endif
|
| @@ -185,6 +181,7 @@ GrDistanceFieldTextureEffect::GrDistanceFieldTextureEffect(GrTexture* texture,
|
| , fFlags(flags & kNonLCD_DistanceFieldEffectMask)
|
| , fInColor(NULL) {
|
| SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask));
|
| + this->initClassID<GrDistanceFieldTextureEffect>();
|
| fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVertexAttribType));
|
| if (flags & kColorAttr_DistanceFieldEffectFlag) {
|
| fInColor = &this->addVertexAttrib(GrAttribute("inColor", kVec4ub_GrVertexAttribType));
|
| @@ -211,8 +208,15 @@ void GrDistanceFieldTextureEffect::onComputeInvariantOutput(GrInvariantOutput* i
|
| inout->mulByUnknownAlpha();
|
| }
|
|
|
| -const GrBackendGeometryProcessorFactory& GrDistanceFieldTextureEffect::getFactory() const {
|
| - return GrTBackendGeometryProcessorFactory<GrDistanceFieldTextureEffect>::getInstance();
|
| +void GrDistanceFieldTextureEffect::getGLProcessorKey(const GrBatchTracker& bt,
|
| + const GrGLCaps& caps,
|
| + GrProcessorKeyBuilder* b) const {
|
| + GrGLDistanceFieldTextureEffect::GenKey(*this, bt, caps, b);
|
| +}
|
| +
|
| +GrGLGeometryProcessor*
|
| +GrDistanceFieldTextureEffect::createGLInstance(const GrBatchTracker& bt) const {
|
| + return SkNEW_ARGS(GrGLDistanceFieldTextureEffect, (*this, bt));
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -258,11 +262,9 @@ GrGeometryProcessor* GrDistanceFieldTextureEffect::TestCreate(SkRandom* random,
|
|
|
| class GrGLDistanceFieldNoGammaTextureEffect : public GrGLGeometryProcessor {
|
| public:
|
| - GrGLDistanceFieldNoGammaTextureEffect(const GrBackendProcessorFactory& factory,
|
| - const GrGeometryProcessor&,
|
| + GrGLDistanceFieldNoGammaTextureEffect(const GrGeometryProcessor&,
|
| const GrBatchTracker&)
|
| - : INHERITED(factory)
|
| - , fTextureSize(SkISize::Make(-1, -1)) {}
|
| + : fTextureSize(SkISize::Make(-1, -1)) {}
|
|
|
| virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
|
| const GrDistanceFieldNoGammaTextureEffect& dfTexEffect =
|
| @@ -383,6 +385,7 @@ GrDistanceFieldNoGammaTextureEffect::GrDistanceFieldNoGammaTextureEffect(GrTextu
|
| , fFlags(flags & kNonLCD_DistanceFieldEffectMask)
|
| , fInColor(NULL) {
|
| SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask));
|
| + this->initClassID<GrDistanceFieldNoGammaTextureEffect>();
|
| fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVertexAttribType));
|
| if (flags & kColorAttr_DistanceFieldEffectFlag) {
|
| fInColor = &this->addVertexAttrib(GrAttribute("inColor", kVec4ub_GrVertexAttribType));
|
| @@ -403,8 +406,15 @@ void GrDistanceFieldNoGammaTextureEffect::onComputeInvariantOutput(GrInvariantOu
|
| inout->mulByUnknownAlpha();
|
| }
|
|
|
| -const GrBackendGeometryProcessorFactory& GrDistanceFieldNoGammaTextureEffect::getFactory() const {
|
| - return GrTBackendGeometryProcessorFactory<GrDistanceFieldNoGammaTextureEffect>::getInstance();
|
| +void GrDistanceFieldNoGammaTextureEffect::getGLProcessorKey(const GrBatchTracker& bt,
|
| + const GrGLCaps& caps,
|
| + GrProcessorKeyBuilder* b) const {
|
| + GrGLDistanceFieldNoGammaTextureEffect::GenKey(*this, bt, caps, b);
|
| +}
|
| +
|
| +GrGLGeometryProcessor*
|
| +GrDistanceFieldNoGammaTextureEffect::createGLInstance(const GrBatchTracker& bt) const {
|
| + return SkNEW_ARGS(GrGLDistanceFieldNoGammaTextureEffect, (*this, bt));
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -437,11 +447,9 @@ GrGeometryProcessor* GrDistanceFieldNoGammaTextureEffect::TestCreate(SkRandom* r
|
|
|
| class GrGLDistanceFieldLCDTextureEffect : public GrGLGeometryProcessor {
|
| public:
|
| - GrGLDistanceFieldLCDTextureEffect(const GrBackendProcessorFactory& factory,
|
| - const GrGeometryProcessor&,
|
| + GrGLDistanceFieldLCDTextureEffect(const GrGeometryProcessor&,
|
| const GrBatchTracker&)
|
| - : INHERITED (factory)
|
| - , fTextureSize(SkISize::Make(-1,-1))
|
| + : fTextureSize(SkISize::Make(-1,-1))
|
| , fTextColor(GrColor_ILLEGAL) {}
|
|
|
| virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
|
| @@ -635,6 +643,7 @@ GrDistanceFieldLCDTextureEffect::GrDistanceFieldLCDTextureEffect(
|
| , fTextColor(textColor)
|
| , fFlags(flags & kLCD_DistanceFieldEffectMask){
|
| SkASSERT(!(flags & ~kLCD_DistanceFieldEffectMask) && (flags & kUseLCD_DistanceFieldEffectFlag));
|
| + this->initClassID<GrDistanceFieldLCDTextureEffect>();
|
| fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVertexAttribType));
|
| fInTextureCoords = &this->addVertexAttrib(GrAttribute("inTextureCoords",
|
| kVec2f_GrVertexAttribType));
|
| @@ -652,8 +661,15 @@ void GrDistanceFieldLCDTextureEffect::onComputeInvariantOutput(GrInvariantOutput
|
| inout->mulByUnknownColor();
|
| }
|
|
|
| -const GrBackendGeometryProcessorFactory& GrDistanceFieldLCDTextureEffect::getFactory() const {
|
| - return GrTBackendGeometryProcessorFactory<GrDistanceFieldLCDTextureEffect>::getInstance();
|
| +void GrDistanceFieldLCDTextureEffect::getGLProcessorKey(const GrBatchTracker& bt,
|
| + const GrGLCaps& caps,
|
| + GrProcessorKeyBuilder* b) const {
|
| + GrGLDistanceFieldLCDTextureEffect::GenKey(*this, bt, caps, b);
|
| +}
|
| +
|
| +GrGLGeometryProcessor*
|
| +GrDistanceFieldLCDTextureEffect::createGLInstance(const GrBatchTracker& bt) const {
|
| + return SkNEW_ARGS(GrGLDistanceFieldLCDTextureEffect, (*this, bt));
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|