Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(712)

Unified Diff: src/effects/gradients/SkTwoPointConicalGradient.cpp

Issue 23018003: Rename GrGLUniformManager to GrGLUniform and ref GrGLUniforms directly Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/effects/gradients/SkSweepGradient.cpp ('k') | src/effects/gradients/SkTwoPointRadialGradient.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/effects/gradients/SkTwoPointConicalGradient.cpp
diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp
index 37b49f0d475a22c9eecfb2027649e32e8b475587..034c4dcfb566a62b8ddda022ea3fef78e5f8bf39 100644
--- a/src/effects/gradients/SkTwoPointConicalGradient.cpp
+++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp
@@ -334,10 +334,6 @@ void SkTwoPointConicalGradient::flatten(
#include "GrTBackendEffectFactory.h"
-// For brevity
-typedef GrGLUniformManager::UniformHandle UniformHandle;
-static const UniformHandle kInvalidUniformHandle = GrGLUniformManager::kInvalidUniformHandle;
-
class GrGLConical2Gradient : public GrGLGradientEffect {
public:
@@ -350,14 +346,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;
@@ -475,8 +471,8 @@ GrEffectRef* GrConical2Gradient::TestCreate(SkMWCRandom* random,
GrGLConical2Gradient::GrGLConical2Gradient(const GrBackendEffectFactory& factory,
const GrDrawEffect& drawEffect)
: INHERITED(factory)
- , fVSParamUni(kInvalidUniformHandle)
- , fFSParamUni(kInvalidUniformHandle)
+ , fVSParamUni(NULL)
+ , fFSParamUni(NULL)
, fVSVaryingName(NULL)
, fFSVaryingName(NULL)
, fCachedCenter(SK_ScalarMax)
@@ -498,14 +494,20 @@ void GrGLConical2Gradient::emitCode(GrGLShaderBuilder* builder,
GrSLType coordsVaryingType;
this->setupMatrix(builder, key, &fsCoords, &vsCoordsVarying, &coordsVaryingType);
- this->emitYCoordUniform(builder);
+ GrGLShaderBuilder::Uniform* yCoordUni = this->emitYCoordUniform(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, "Conical2VSParams", 6);
- fFSParamUni = builder->addUniformArray(GrGLShaderBuilder::kFragment_ShaderType,
- kFloat_GrSLType, "Conical2FSParams", 6);
+ GrGLShaderBuilder::Uniform* vsParamUni =
+ builder->addUniformArray(GrGLShaderBuilder::kVertex_ShaderType,
+ kFloat_GrSLType, "Conical2VSParams", 6);
+ fVSParamUni = vsParamUni->glUniform();
+
+ GrGLShaderBuilder::Uniform* fsParamUni =
+ builder->addUniformArray(GrGLShaderBuilder::kFragment_ShaderType,
+ kFloat_GrSLType, "Conical2FSParams", 6);
+ fFSParamUni = fsParamUni->glUniform();
// For radial gradients without perspective we can pass the linear
// part of the quadratic as a varying.
@@ -519,9 +521,9 @@ void GrGLConical2Gradient::emitCode(GrGLShaderBuilder* builder,
SkString p2; // distance between centers
SkString p3; // start radius
SkString p5; // difference in radii (r1 - r0)
- builder->getUniformVariable(fVSParamUni).appendArrayAccess(2, &p2);
- builder->getUniformVariable(fVSParamUni).appendArrayAccess(3, &p3);
- builder->getUniformVariable(fVSParamUni).appendArrayAccess(5, &p5);
+ vsParamUni->appendArrayAccess(2, &p2);
+ vsParamUni->appendArrayAccess(3, &p3);
+ vsParamUni->appendArrayAccess(5, &p5);
// For radial gradients without perspective we can pass the linear
// part of the quadratic as a varying.
@@ -550,12 +552,12 @@ void GrGLConical2Gradient::emitCode(GrGLShaderBuilder* builder,
SkString p4; // start radius squared
SkString p5; // difference in radii (r1 - r0)
- 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
@@ -618,7 +620,7 @@ void GrGLConical2Gradient::emitCode(GrGLShaderBuilder* builder,
p5.c_str(), p3.c_str());
builder->fsCodeAppend("\t\t");
- this->emitColorLookup(builder, tName.c_str(), outputColor, inputColor, samplers[0]);
+ this->emitColorLookup(builder, yCoordUni, tName.c_str(), outputColor, inputColor, samplers[0]);
// otherwise, if r(t) for the larger root was <= 0, try the other root
builder->fsCodeAppend("\t\t} else {\n");
@@ -630,7 +632,7 @@ void GrGLConical2Gradient::emitCode(GrGLShaderBuilder* builder,
tName.c_str(), p5.c_str(), p3.c_str());
builder->fsCodeAppend("\t\t\t");
- this->emitColorLookup(builder, tName.c_str(), outputColor, inputColor, samplers[0]);
+ this->emitColorLookup(builder, yCoordUni, tName.c_str(), outputColor, inputColor, samplers[0]);
// end if (r(t) > 0) for smaller root
builder->fsCodeAppend("\t\t\t}\n");
@@ -648,15 +650,15 @@ void GrGLConical2Gradient::emitCode(GrGLShaderBuilder* builder,
builder->fsCodeAppendf("\tif (%s * %s + %s > 0.0) {\n", tName.c_str(),
p5.c_str(), p3.c_str());
builder->fsCodeAppend("\t");
- this->emitColorLookup(builder, tName.c_str(), outputColor, inputColor, samplers[0]);
+ this->emitColorLookup(builder, yCoordUni, tName.c_str(), outputColor, inputColor, samplers[0]);
builder->fsCodeAppend("\t}\n");
}
}
}
-void GrGLConical2Gradient::setData(const GrGLUniformManager& uman,
+void GrGLConical2Gradient::setData(const GrGLContext& context,
const GrDrawEffect& drawEffect) {
- INHERITED::setData(uman, drawEffect);
+ INHERITED::setData(context, drawEffect);
const GrConical2Gradient& data = drawEffect.castEffect<GrConical2Gradient>();
GrAssert(data.isDegenerate() == fIsDegenerate);
SkScalar centerX1 = data.center();
@@ -683,8 +685,8 @@ void GrGLConical2Gradient::setData(const GrGLUniformManager& uman,
SkScalarToFloat(diffRadius)
};
- 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;
fCachedDiffRadius = diffRadius;
« no previous file with comments | « src/effects/gradients/SkSweepGradient.cpp ('k') | src/effects/gradients/SkTwoPointRadialGradient.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698