| Index: src/effects/SkArithmeticMode.cpp
|
| diff --git a/src/effects/SkArithmeticMode.cpp b/src/effects/SkArithmeticMode.cpp
|
| index fd3a683fbb92bc009c12daa290366da6724bf210..d746ecbc3120d0111716d39ba47806177fe1808e 100644
|
| --- a/src/effects/SkArithmeticMode.cpp
|
| +++ b/src/effects/SkArithmeticMode.cpp
|
| @@ -12,8 +12,8 @@
|
| #include "SkUnPreMultiply.h"
|
| #if SK_SUPPORT_GPU
|
| #include "GrContext.h"
|
| +#include "GrCoordTransform.h"
|
| #include "gl/GrGLEffect.h"
|
| -#include "gl/GrGLEffectMatrix.h"
|
| #include "GrTBackendEffectFactory.h"
|
| #include "SkImageFilterUtils.h"
|
| #endif
|
| @@ -246,15 +246,12 @@ public:
|
| EffectKey,
|
| const char* outputColor,
|
| const char* inputColor,
|
| + const TransformedCoordsArray&,
|
| const TextureSamplerArray&) SK_OVERRIDE;
|
|
|
| - static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&);
|
| -
|
| virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE;
|
|
|
| private:
|
| - static const GrEffect::CoordsType kCoordsType = GrEffect::kLocal_CoordsType;
|
| - GrGLEffectMatrix fBackgroundEffectMatrix;
|
| GrGLUniformManager::UniformHandle fKUni;
|
|
|
| typedef GrGLEffect INHERITED;
|
| @@ -289,6 +286,7 @@ private:
|
|
|
| GrArithmeticEffect(float k1, float k2, float k3, float k4, GrTexture* background);
|
| float fK1, fK2, fK3, fK4;
|
| + GrCoordTransform fBackgroundTransform;
|
| GrTextureAccess fBackgroundAccess;
|
|
|
| GR_DECLARE_EFFECT_TEST;
|
| @@ -302,6 +300,8 @@ GrArithmeticEffect::GrArithmeticEffect(float k1, float k2, float k3, float k4,
|
| GrTexture* background)
|
| : fK1(k1), fK2(k2), fK3(k3), fK4(k4) {
|
| if (background) {
|
| + fBackgroundTransform.reset(kLocal_GrCoordSet, background);
|
| + this->addCoordTransform(&fBackgroundTransform);
|
| fBackgroundAccess.reset(background);
|
| this->addTextureAccess(&fBackgroundAccess);
|
| } else {
|
| @@ -334,8 +334,7 @@ void GrArithmeticEffect::getConstantColorComponents(GrColor* color, uint32_t* va
|
|
|
| GrGLArithmeticEffect::GrGLArithmeticEffect(const GrBackendEffectFactory& factory,
|
| const GrDrawEffect& drawEffect)
|
| - : INHERITED(factory)
|
| - , fBackgroundEffectMatrix(kCoordsType) {
|
| + : INHERITED(factory) {
|
| }
|
|
|
| GrGLArithmeticEffect::~GrGLArithmeticEffect() {
|
| @@ -346,15 +345,14 @@ void GrGLArithmeticEffect::emitCode(GrGLShaderBuilder* builder,
|
| EffectKey key,
|
| const char* outputColor,
|
| const char* inputColor,
|
| + const TransformedCoordsArray& coords,
|
| const TextureSamplerArray& samplers) {
|
|
|
| GrTexture* backgroundTex = drawEffect.castEffect<GrArithmeticEffect>().backgroundTexture();
|
| const char* dstColor;
|
| if (backgroundTex) {
|
| - SkString bgCoords;
|
| - GrSLType bgCoordsType = fBackgroundEffectMatrix.emitCode(builder, key, &bgCoords, NULL, "BG");
|
| builder->fsCodeAppend("\t\tvec4 bgColor = ");
|
| - builder->fsAppendTextureLookup(samplers[0], bgCoords.c_str(), bgCoordsType);
|
| + builder->fsAppendTextureLookup(samplers[0], coords[0].c_str(), coords[0].type());
|
| builder->fsCodeAppendf(";\n");
|
| dstColor = "bgColor";
|
| } else {
|
| @@ -393,26 +391,6 @@ void GrGLArithmeticEffect::emitCode(GrGLShaderBuilder* builder,
|
| void GrGLArithmeticEffect::setData(const GrGLUniformManager& uman, const GrDrawEffect& drawEffect) {
|
| const GrArithmeticEffect& arith = drawEffect.castEffect<GrArithmeticEffect>();
|
| uman.set4f(fKUni, arith.k1(), arith.k2(), arith.k3(), arith.k4());
|
| - GrTexture* bgTex = arith.backgroundTexture();
|
| - if (bgTex) {
|
| - fBackgroundEffectMatrix.setData(uman,
|
| - GrEffect::MakeDivByTextureWHMatrix(bgTex),
|
| - drawEffect,
|
| - bgTex);
|
| - }
|
| -}
|
| -
|
| -GrGLEffect::EffectKey GrGLArithmeticEffect::GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&) {
|
| - const GrArithmeticEffect& effect = drawEffect.castEffect<GrArithmeticEffect>();
|
| - GrTexture* bgTex = effect.backgroundTexture();
|
| - EffectKey bgKey = 0;
|
| - if (bgTex) {
|
| - bgKey = GrGLEffectMatrix::GenKey(GrEffect::MakeDivByTextureWHMatrix(bgTex),
|
| - drawEffect,
|
| - GrGLArithmeticEffect::kCoordsType,
|
| - bgTex);
|
| - }
|
| - return bgKey;
|
| }
|
|
|
| GrEffectRef* GrArithmeticEffect::TestCreate(SkRandom* rand,
|
|
|