Index: src/effects/SkMagnifierImageFilter.cpp |
diff --git a/src/effects/SkMagnifierImageFilter.cpp b/src/effects/SkMagnifierImageFilter.cpp |
index f4a72b8d2c0ebeedf9b5959ad23491b8eb27ce82..a5319948fcce0c6c36da919aeb139a48c4c3160a 100644 |
--- a/src/effects/SkMagnifierImageFilter.cpp |
+++ b/src/effects/SkMagnifierImageFilter.cpp |
@@ -87,9 +87,6 @@ private: |
typedef GrSingleTextureEffect INHERITED; |
}; |
-// For brevity |
-typedef GrGLUniformManager::UniformHandle UniformHandle; |
- |
class GrGLMagnifierEffect : public GrGLEffect { |
public: |
GrGLMagnifierEffect(const GrBackendEffectFactory&, const GrDrawEffect&); |
@@ -101,14 +98,14 @@ public: |
const char* inputColor, |
const TextureSamplerArray&) SK_OVERRIDE; |
- virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE; |
+ virtual void setData(const GrGLContext&, const GrDrawEffect&) SK_OVERRIDE; |
static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); |
private: |
- UniformHandle fOffsetVar; |
- UniformHandle fZoomVar; |
- UniformHandle fInsetVar; |
+ GrGLUniform* fOffsetVar; |
+ GrGLUniform* fZoomVar; |
+ GrGLUniform* fInsetVar; |
GrGLEffectMatrix fEffectMatrix; |
@@ -118,9 +115,9 @@ private: |
GrGLMagnifierEffect::GrGLMagnifierEffect(const GrBackendEffectFactory& factory, |
const GrDrawEffect& drawEffect) |
: INHERITED(factory) |
- , fOffsetVar(GrGLUniformManager::kInvalidUniformHandle) |
- , fZoomVar(GrGLUniformManager::kInvalidUniformHandle) |
- , fInsetVar(GrGLUniformManager::kInvalidUniformHandle) |
+ , fOffsetVar(NULL) |
+ , fZoomVar(NULL) |
+ , fInsetVar(NULL) |
, fEffectMatrix(drawEffect.castEffect<GrMagnifierEffect>().coordsType()) { |
} |
@@ -132,28 +129,34 @@ void GrGLMagnifierEffect::emitCode(GrGLShaderBuilder* builder, |
const TextureSamplerArray& samplers) { |
const char* coords; |
fEffectMatrix.emitCodeMakeFSCoords2D(builder, key, &coords); |
- fOffsetVar = builder->addUniform( |
+ GrGLShaderBuilder::Uniform* offsetVar = builder->addUniform( |
GrGLShaderBuilder::kFragment_ShaderType | |
GrGLShaderBuilder::kVertex_ShaderType, |
kVec2f_GrSLType, "uOffset"); |
- fZoomVar = builder->addUniform( |
+ fOffsetVar = offsetVar->glUniform(); |
+ |
+ GrGLShaderBuilder::Uniform* zoomVar = builder->addUniform( |
GrGLShaderBuilder::kFragment_ShaderType | |
GrGLShaderBuilder::kVertex_ShaderType, |
kVec2f_GrSLType, "uZoom"); |
- fInsetVar = builder->addUniform( |
+ fZoomVar = zoomVar->glUniform(); |
+ |
+ GrGLShaderBuilder::Uniform* insetVar = builder->addUniform( |
GrGLShaderBuilder::kFragment_ShaderType | |
GrGLShaderBuilder::kVertex_ShaderType, |
kVec2f_GrSLType, "uInset"); |
+ fInsetVar = insetVar->glUniform(); |
+ |
builder->fsCodeAppendf("\t\tvec2 coord = %s;\n", coords); |
builder->fsCodeAppendf("\t\tvec2 zoom_coord = %s + %s / %s;\n", |
- builder->getUniformCStr(fOffsetVar), |
- coords, |
- builder->getUniformCStr(fZoomVar)); |
+ offsetVar->c_str(), |
+ coords, |
+ zoomVar->c_str()); |
builder->fsCodeAppend("\t\tvec2 delta = min(coord, vec2(1.0, 1.0) - coord);\n"); |
- builder->fsCodeAppendf("\t\tdelta = delta / %s;\n", builder->getUniformCStr(fInsetVar)); |
+ builder->fsCodeAppendf("\t\tdelta = delta / %s;\n", insetVar->c_str()); |
builder->fsCodeAppend("\t\tfloat weight = 0.0;\n"); |
builder->fsCodeAppend("\t\tif (delta.s < 2.0 && delta.t < 2.0) {\n"); |
@@ -177,13 +180,13 @@ void GrGLMagnifierEffect::emitCode(GrGLShaderBuilder* builder, |
builder->fsCodeAppend(modulate.c_str()); |
} |
-void GrGLMagnifierEffect::setData(const GrGLUniformManager& uman, |
+void GrGLMagnifierEffect::setData(const GrGLContext& context, |
const GrDrawEffect& drawEffect) { |
const GrMagnifierEffect& zoom = drawEffect.castEffect<GrMagnifierEffect>(); |
- uman.set2f(fOffsetVar, zoom.x_offset(), zoom.y_offset()); |
- uman.set2f(fZoomVar, zoom.x_zoom(), zoom.y_zoom()); |
- uman.set2f(fInsetVar, zoom.x_inset(), zoom.y_inset()); |
- fEffectMatrix.setData(uman, zoom.getMatrix(), drawEffect, zoom.texture(0)); |
+ fOffsetVar->set2f(context, zoom.x_offset(), zoom.y_offset()); |
+ fZoomVar->set2f(context, zoom.x_zoom(), zoom.y_zoom()); |
+ fInsetVar->set2f(context, zoom.x_inset(), zoom.y_inset()); |
+ fEffectMatrix.setData(context, zoom.getMatrix(), drawEffect, zoom.texture(0)); |
} |
GrGLEffect::EffectKey GrGLMagnifierEffect::GenKey(const GrDrawEffect& drawEffect, |