| Index: src/effects/SkColorMatrixFilter.cpp
|
| diff --git a/src/effects/SkColorMatrixFilter.cpp b/src/effects/SkColorMatrixFilter.cpp
|
| index 3d1fd6f62749ee3350a1ebb4df4364bbf2875310..551efcbbd24ac0687cb923fadaa853725b3e517d 100644
|
| --- a/src/effects/SkColorMatrixFilter.cpp
|
| +++ b/src/effects/SkColorMatrixFilter.cpp
|
| @@ -391,9 +391,10 @@ public:
|
|
|
| GLEffect(const GrBackendEffectFactory& factory,
|
| const GrDrawEffect&)
|
| - : INHERITED(factory)
|
| - , fMatrixHandle(GrGLUniformManager::kInvalidUniformHandle)
|
| - , fVectorHandle(GrGLUniformManager::kInvalidUniformHandle) {}
|
| + : INHERITED(factory)
|
| + , fMatrixHandle(NULL)
|
| + , fVectorHandle(NULL) {
|
| + }
|
|
|
| virtual void emitCode(GrGLShaderBuilder* builder,
|
| const GrDrawEffect&,
|
| @@ -401,12 +402,17 @@ public:
|
| const char* outputColor,
|
| const char* inputColor,
|
| const TextureSamplerArray&) SK_OVERRIDE {
|
| - fMatrixHandle = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| - kMat44f_GrSLType,
|
| - "ColorMatrix");
|
| - fVectorHandle = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| - kVec4f_GrSLType,
|
| - "ColorMatrixVector");
|
| + GrGLShaderBuilder::Uniform* matrixHandle =
|
| + builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| + kMat44f_GrSLType,
|
| + "ColorMatrix");
|
| + fMatrixHandle = matrixHandle->glUniform();
|
| +
|
| + GrGLShaderBuilder::Uniform* vectorHandle =
|
| + builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
|
| + kVec4f_GrSLType,
|
| + "ColorMatrixVector");
|
| + fVectorHandle = vectorHandle->glUniform();
|
|
|
| if (NULL == inputColor) {
|
| // could optimize this case, but we aren't for now.
|
| @@ -417,13 +423,13 @@ public:
|
| builder->fsCodeAppendf("\tfloat nonZeroAlpha = max(%s.a, 0.00001);\n", inputColor);
|
| builder->fsCodeAppendf("\t%s = %s * vec4(%s.rgb / nonZeroAlpha, nonZeroAlpha) + %s;\n",
|
| outputColor,
|
| - builder->getUniformCStr(fMatrixHandle),
|
| + matrixHandle->c_str(),
|
| inputColor,
|
| - builder->getUniformCStr(fVectorHandle));
|
| + vectorHandle->c_str());
|
| builder->fsCodeAppendf("\t%s.rgb *= %s.a;\n", outputColor, outputColor);
|
| }
|
|
|
| - virtual void setData(const GrGLUniformManager& uniManager,
|
| + virtual void setData(const GrGLContext& context,
|
| const GrDrawEffect& drawEffect) SK_OVERRIDE {
|
| const ColorMatrixEffect& cme = drawEffect.castEffect<ColorMatrixEffect>();
|
| const float* m = cme.fMatrix.fMat;
|
| @@ -438,13 +444,13 @@ public:
|
| GrGLfloat vec[] = {
|
| m[4] * kScale, m[9] * kScale, m[14] * kScale, m[19] * kScale,
|
| };
|
| - uniManager.setMatrix4fv(fMatrixHandle, 0, 1, mt);
|
| - uniManager.set4fv(fVectorHandle, 0, 1, vec);
|
| + fMatrixHandle->setMatrix4fv(context, 0, 1, mt);
|
| + fVectorHandle->set4fv(context, 0, 1, vec);
|
| }
|
|
|
| private:
|
| - GrGLUniformManager::UniformHandle fMatrixHandle;
|
| - GrGLUniformManager::UniformHandle fVectorHandle;
|
| + GrGLUniform* fMatrixHandle;
|
| + GrGLUniform* fVectorHandle;
|
| };
|
|
|
| private:
|
|
|