Index: src/effects/gradients/SkTwoPointRadialGradient.cpp |
diff --git a/src/effects/gradients/SkTwoPointRadialGradient.cpp b/src/effects/gradients/SkTwoPointRadialGradient.cpp |
index 989c1395563145122a0f13e88a5822011adcbd83..7a2ed9a307bbc09a2b65f3f5f67cb9e5974bd47a 100644 |
--- a/src/effects/gradients/SkTwoPointRadialGradient.cpp |
+++ b/src/effects/gradients/SkTwoPointRadialGradient.cpp |
@@ -374,10 +374,6 @@ void SkTwoPointRadialGradient::init() { |
#include "GrTBackendEffectFactory.h" |
-// For brevity |
-typedef GrGLUniformManager::UniformHandle UniformHandle; |
-static const UniformHandle kInvalidUniformHandle = GrGLUniformManager::kInvalidUniformHandle; |
- |
class GrGLRadial2Gradient : public GrGLGradientEffect { |
public: |
@@ -391,14 +387,14 @@ public: |
const char* outputColor, |
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 EffectKey GenKey(const GrDrawEffect&, const GrGLCaps& caps); |
protected: |
- UniformHandle fVSParamUni; |
- UniformHandle fFSParamUni; |
+ GrGLUniform* fVSParamUni; |
+ GrGLUniform* fFSParamUni; |
const char* fVSVaryingName; |
const char* fFSVaryingName; |
@@ -516,8 +512,8 @@ GrEffectRef* GrRadial2Gradient::TestCreate(SkMWCRandom* random, |
GrGLRadial2Gradient::GrGLRadial2Gradient(const GrBackendEffectFactory& factory, |
const GrDrawEffect& drawEffect) |
: INHERITED(factory) |
- , fVSParamUni(kInvalidUniformHandle) |
- , fFSParamUni(kInvalidUniformHandle) |
+ , fVSParamUni(NULL) |
+ , fFSParamUni(NULL) |
, fVSVaryingName(NULL) |
, fFSVaryingName(NULL) |
, fCachedCenter(SK_ScalarMax) |
@@ -535,7 +531,7 @@ void GrGLRadial2Gradient::emitCode(GrGLShaderBuilder* builder, |
const char* inputColor, |
const TextureSamplerArray& samplers) { |
- this->emitYCoordUniform(builder); |
+ GrGLShaderBuilder::Uniform* yCoordUni = this->emitYCoordUniform(builder); |
const char* fsCoords; |
const char* vsCoordsVarying; |
GrSLType coordsVaryingType; |
@@ -544,10 +540,15 @@ void GrGLRadial2Gradient::emitCode(GrGLShaderBuilder* builder, |
// 2 copies of uniform array, 1 for each of vertex & fragment shader, |
// to work around Xoom bug. Doesn't seem to cause performance decrease |
// in test apps, but need to keep an eye on it. |
- fVSParamUni = builder->addUniformArray(GrGLShaderBuilder::kVertex_ShaderType, |
- kFloat_GrSLType, "Radial2VSParams", 6); |
- fFSParamUni = builder->addUniformArray(GrGLShaderBuilder::kFragment_ShaderType, |
- kFloat_GrSLType, "Radial2FSParams", 6); |
+ GrGLShaderBuilder::Uniform* vsParamUni = |
+ builder->addUniformArray(GrGLShaderBuilder::kVertex_ShaderType, |
+ kFloat_GrSLType, "Radial2VSParams", 6); |
+ fVSParamUni = vsParamUni->glUniform(); |
+ |
+ GrGLShaderBuilder::Uniform* fsParamUni = |
+ builder->addUniformArray(GrGLShaderBuilder::kFragment_ShaderType, |
+ kFloat_GrSLType, "Radial2FSParams", 6); |
+ fFSParamUni = fsParamUni->glUniform(); |
// For radial gradients without perspective we can pass the linear |
// part of the quadratic as a varying. |
@@ -559,8 +560,8 @@ void GrGLRadial2Gradient::emitCode(GrGLShaderBuilder* builder, |
{ |
SkString p2; |
SkString p3; |
- builder->getUniformVariable(fVSParamUni).appendArrayAccess(2, &p2); |
- builder->getUniformVariable(fVSParamUni).appendArrayAccess(3, &p3); |
+ vsParamUni->appendArrayAccess(2, &p2); |
+ vsParamUni->appendArrayAccess(3, &p3); |
// For radial gradients without perspective we can pass the linear |
// part of the quadratic as a varying. |
@@ -584,12 +585,12 @@ void GrGLRadial2Gradient::emitCode(GrGLShaderBuilder* builder, |
SkString p3; |
SkString p4; |
SkString p5; |
- builder->getUniformVariable(fFSParamUni).appendArrayAccess(0, &p0); |
- builder->getUniformVariable(fFSParamUni).appendArrayAccess(1, &p1); |
- builder->getUniformVariable(fFSParamUni).appendArrayAccess(2, &p2); |
- builder->getUniformVariable(fFSParamUni).appendArrayAccess(3, &p3); |
- builder->getUniformVariable(fFSParamUni).appendArrayAccess(4, &p4); |
- builder->getUniformVariable(fFSParamUni).appendArrayAccess(5, &p5); |
+ fsParamUni->appendArrayAccess(0, &p0); |
+ fsParamUni->appendArrayAccess(1, &p1); |
+ fsParamUni->appendArrayAccess(2, &p2); |
+ fsParamUni->appendArrayAccess(3, &p3); |
+ fsParamUni->appendArrayAccess(4, &p4); |
+ fsParamUni->appendArrayAccess(5, &p5); |
// If we we're able to interpolate the linear component, |
// bVar is the varying; otherwise compute it |
@@ -632,13 +633,13 @@ void GrGLRadial2Gradient::emitCode(GrGLShaderBuilder* builder, |
t.printf("-%s / %s", cName.c_str(), bVar.c_str()); |
} |
- this->emitColorLookup(builder, t.c_str(), outputColor, inputColor, samplers[0]); |
+ this->emitColorLookup(builder, yCoordUni, t.c_str(), outputColor, inputColor, samplers[0]); |
} |
} |
-void GrGLRadial2Gradient::setData(const GrGLUniformManager& uman, |
+void GrGLRadial2Gradient::setData(const GrGLContext& context, |
const GrDrawEffect& drawEffect) { |
- INHERITED::setData(uman, drawEffect); |
+ INHERITED::setData(context, drawEffect); |
const GrRadial2Gradient& data = drawEffect.castEffect<GrRadial2Gradient>(); |
GrAssert(data.isDegenerate() == fIsDegenerate); |
SkScalar centerX1 = data.center(); |
@@ -663,8 +664,8 @@ void GrGLRadial2Gradient::setData(const GrGLUniformManager& uman, |
data.isPosRoot() ? 1.f : -1.f |
}; |
- uman.set1fv(fVSParamUni, 0, 6, values); |
- uman.set1fv(fFSParamUni, 0, 6, values); |
+ fVSParamUni->set1fv(context, 0, 6, values); |
+ fFSParamUni->set1fv(context, 0, 6, values); |
fCachedCenter = centerX1; |
fCachedRadius = radius0; |
fCachedPosRoot = data.isPosRoot(); |