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: |