| Index: src/effects/SkBicubicImageFilter.cpp
|
| diff --git a/src/effects/SkBicubicImageFilter.cpp b/src/effects/SkBicubicImageFilter.cpp
|
| index db8dbfd0286c506b98cc4a58720d5e67820f562d..06a07901cabc831014a54fcf11e4a684e37df505 100644
|
| --- a/src/effects/SkBicubicImageFilter.cpp
|
| +++ b/src/effects/SkBicubicImageFilter.cpp
|
| @@ -15,6 +15,7 @@
|
|
|
| #if SK_SUPPORT_GPU
|
| #include "gl/GrGLEffectMatrix.h"
|
| +#include "gl/GrGLShaderBuilder.h"
|
| #include "effects/GrSingleTextureEffect.h"
|
| #include "GrTBackendEffectFactory.h"
|
| #include "GrContext.h"
|
| @@ -199,13 +200,11 @@ public:
|
|
|
| static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&);
|
|
|
| - virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE;
|
| + virtual void setData(const GrGLContext&, const GrDrawEffect&) SK_OVERRIDE;
|
|
|
| private:
|
| - typedef GrGLUniformManager::UniformHandle UniformHandle;
|
| -
|
| - UniformHandle fCoefficientsUni;
|
| - UniformHandle fImageIncrementUni;
|
| + GrGLUniform* fCoefficientsUni;
|
| + GrGLUniform* fImageIncrementUni;
|
|
|
| GrGLEffectMatrix fEffectMatrix;
|
|
|
| @@ -215,8 +214,8 @@ private:
|
| GrGLBicubicEffect::GrGLBicubicEffect(const GrBackendEffectFactory& factory,
|
| const GrDrawEffect& drawEffect)
|
| : INHERITED(factory)
|
| - , fCoefficientsUni(GrGLUniformManager::kInvalidUniformHandle)
|
| - , fImageIncrementUni(GrGLUniformManager::kInvalidUniformHandle)
|
| + , fCoefficientsUni(NULL)
|
| + , fImageIncrementUni(NULL)
|
| , fEffectMatrix(drawEffect.castEffect<GrBicubicEffect>().coordsType()) {
|
| }
|
|
|
| @@ -228,13 +227,16 @@ void GrGLBicubicEffect::emitCode(GrGLShaderBuilder* builder,
|
| const TextureSamplerArray& samplers) {
|
| const char* coords;
|
| fEffectMatrix.emitCodeMakeFSCoords2D(builder, key, &coords);
|
| - fCoefficientsUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| - kMat44f_GrSLType, "Coefficients");
|
| - fImageIncrementUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| - kVec2f_GrSLType, "ImageIncrement");
|
| + GrGLShaderBuilder::Uniform* coefficientsUni =
|
| + builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kMat44f_GrSLType, "Coefficients");
|
| + fCoefficientsUni = coefficientsUni->glUniform();
|
| +
|
| + GrGLShaderBuilder::Uniform* imageIncrementUni =
|
| + builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kVec2f_GrSLType, "ImageIncrement");
|
| + fImageIncrementUni = imageIncrementUni->glUniform();
|
|
|
| - const char* imgInc = builder->getUniformCStr(fImageIncrementUni);
|
| - const char* coeff = builder->getUniformCStr(fCoefficientsUni);
|
| + const char* imgInc = imageIncrementUni->c_str();
|
| + const char* coeff = coefficientsUni->c_str();
|
|
|
| SkString cubicBlendName;
|
|
|
| @@ -281,16 +283,16 @@ GrGLEffect::EffectKey GrGLBicubicEffect::GenKey(const GrDrawEffect& drawEffect,
|
| return matrixKey;
|
| }
|
|
|
| -void GrGLBicubicEffect::setData(const GrGLUniformManager& uman,
|
| +void GrGLBicubicEffect::setData(const GrGLContext& context,
|
| const GrDrawEffect& drawEffect) {
|
| const GrBicubicEffect& effect = drawEffect.castEffect<GrBicubicEffect>();
|
| GrTexture& texture = *effect.texture(0);
|
| float imageIncrement[2];
|
| imageIncrement[0] = 1.0f / texture.width();
|
| imageIncrement[1] = 1.0f / texture.height();
|
| - uman.set2fv(fImageIncrementUni, 0, 1, imageIncrement);
|
| - uman.setMatrix4f(fCoefficientsUni, effect.coefficients());
|
| - fEffectMatrix.setData(uman,
|
| + fImageIncrementUni->set2fv(context, 0, 1, imageIncrement);
|
| + fCoefficientsUni->setMatrix4f(context, effect.coefficients());
|
| + fEffectMatrix.setData(context,
|
| effect.getMatrix(),
|
| drawEffect,
|
| effect.texture(0));
|
|
|