| Index: src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| diff --git a/src/gpu/effects/GrDistanceFieldTextureEffect.cpp b/src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| index eaaefebc540cb883e9bb6b68de198bf1c8d512bf..25018e9599295f0bc6d40bde5242adcc76d3279e 100755
|
| --- a/src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| +++ b/src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| @@ -10,7 +10,7 @@
|
| #include "gl/GrGLEffect.h"
|
| #include "gl/GrGLSL.h"
|
| #include "gl/GrGLTexture.h"
|
| -#include "gl/GrGLVertexEffect.h"
|
| +#include "gl/GrGLGeometryProcessor.h"
|
| #include "GrTBackendEffectFactory.h"
|
| #include "GrTexture.h"
|
|
|
| @@ -29,7 +29,11 @@
|
| // Assuming a radius of the diagonal of the fragment, hence a factor of sqrt(2)/2
|
| #define SK_DistanceFieldAAFactor "0.7071"
|
|
|
| -class GrGLDistanceFieldTextureEffect : public GrGLVertexEffect {
|
| +const GrShaderVar kAttrTextureCoords("aTextureCoords",
|
| + kVec2f_GrSLType,
|
| + GrShaderVar::kAttribute_TypeModifier);
|
| +
|
| +class GrGLDistanceFieldTextureEffect : public GrGLGeometryProcessor {
|
| public:
|
| GrGLDistanceFieldTextureEffect(const GrBackendEffectFactory& factory,
|
| const GrDrawEffect& drawEffect)
|
| @@ -43,7 +47,8 @@ public:
|
| const char* inputColor,
|
| const TransformedCoordsArray&,
|
| const TextureSamplerArray& samplers) SK_OVERRIDE {
|
| - SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldTextureEffect>().numVertexAttribs());
|
| + SkASSERT(1 ==
|
| + drawEffect.castEffect<GrDistanceFieldTextureEffect>().getVertexAttribs().count());
|
|
|
| GrGLFragmentShaderBuilder* fsBuilder = builder->getFragmentShaderBuilder();
|
| SkAssertResult(fsBuilder->enableFeature(
|
| @@ -58,9 +63,7 @@ public:
|
| fsCoordName = fsCoordNamePtr;
|
|
|
| GrGLVertexShaderBuilder* vsBuilder = builder->getVertexShaderBuilder();
|
| - const SkString* attr0Name =
|
| - vsBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices()[0]);
|
| - vsBuilder->codeAppendf("\t%s = %s;\n", vsCoordName, attr0Name->c_str());
|
| + vsBuilder->codeAppendf("\t%s = %s;\n", vsCoordName, kAttrTextureCoords.c_str());
|
|
|
| const char* textureSizeUniName = NULL;
|
| fTextureSizeUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
|
| @@ -165,7 +168,7 @@ private:
|
| GrGLProgramDataManager::UniformHandle fLuminanceUni;
|
| float fLuminance;
|
|
|
| - typedef GrGLVertexEffect INHERITED;
|
| + typedef GrGLGeometryProcessor INHERITED;
|
| };
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -189,7 +192,7 @@ GrDistanceFieldTextureEffect::GrDistanceFieldTextureEffect(GrTexture* texture,
|
| #ifdef SK_GAMMA_APPLY_TO_A8
|
| this->addTextureAccess(&fGammaTextureAccess);
|
| #endif
|
| - this->addVertexAttrib(kVec2f_GrSLType);
|
| + this->addVertexAttrib(kAttrTextureCoords);
|
| }
|
|
|
| bool GrDistanceFieldTextureEffect::onIsEqual(const GrEffect& other) const {
|
| @@ -257,7 +260,7 @@ GrEffect* GrDistanceFieldTextureEffect::TestCreate(SkRandom* random,
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| -class GrGLDistanceFieldLCDTextureEffect : public GrGLVertexEffect {
|
| +class GrGLDistanceFieldLCDTextureEffect : public GrGLGeometryProcessor {
|
| public:
|
| GrGLDistanceFieldLCDTextureEffect(const GrBackendEffectFactory& factory,
|
| const GrDrawEffect& drawEffect)
|
| @@ -271,7 +274,9 @@ public:
|
| const char* inputColor,
|
| const TransformedCoordsArray&,
|
| const TextureSamplerArray& samplers) SK_OVERRIDE {
|
| - SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldLCDTextureEffect>().numVertexAttribs());
|
| + SkASSERT(1 ==
|
| + drawEffect.castEffect<GrDistanceFieldLCDTextureEffect>()
|
| + .getVertexAttribs().count());
|
|
|
| const GrDistanceFieldLCDTextureEffect& dfTexEffect =
|
| drawEffect.castEffect<GrDistanceFieldLCDTextureEffect>();
|
| @@ -283,9 +288,7 @@ public:
|
| fsCoordName = fsCoordNamePtr;
|
|
|
| GrGLVertexShaderBuilder* vsBuilder = builder->getVertexShaderBuilder();
|
| - const SkString* attr0Name =
|
| - vsBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices()[0]);
|
| - vsBuilder->codeAppendf("\t%s = %s;\n", vsCoordName, attr0Name->c_str());
|
| + vsBuilder->codeAppendf("\t%s = %s;\n", vsCoordName, kAttrTextureCoords.c_str());
|
|
|
| const char* textureSizeUniName = NULL;
|
| // width, height, 1/(3*width)
|
| @@ -443,7 +446,7 @@ private:
|
| GrGLProgramDataManager::UniformHandle fTextColorUni;
|
| SkColor fTextColor;
|
|
|
| - typedef GrGLVertexEffect INHERITED;
|
| + typedef GrGLGeometryProcessor INHERITED;
|
| };
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -461,7 +464,7 @@ GrDistanceFieldLCDTextureEffect::GrDistanceFieldLCDTextureEffect(
|
|
|
| this->addTextureAccess(&fTextureAccess);
|
| this->addTextureAccess(&fGammaTextureAccess);
|
| - this->addVertexAttrib(kVec2f_GrSLType);
|
| + this->addVertexAttrib(kAttrTextureCoords);
|
| }
|
|
|
| bool GrDistanceFieldLCDTextureEffect::onIsEqual(const GrEffect& other) const {
|
|
|