| Index: src/gpu/effects/GrOvalEffect.cpp
|
| diff --git a/src/gpu/effects/GrOvalEffect.cpp b/src/gpu/effects/GrOvalEffect.cpp
|
| index e7b52359fc0d01d693fa4cd288b913529f7c8be2..729e8a599c7bb8253813b935bac23082c20f89c5 100644
|
| --- a/src/gpu/effects/GrOvalEffect.cpp
|
| +++ b/src/gpu/effects/GrOvalEffect.cpp
|
| @@ -93,12 +93,7 @@ class GLCircleEffect : public GrGLFragmentProcessor {
|
| public:
|
| GLCircleEffect(const GrProcessor&);
|
|
|
| - virtual void emitCode(GrGLFPBuilder* builder,
|
| - const GrFragmentProcessor& fp,
|
| - const char* outputColor,
|
| - const char* inputColor,
|
| - const TransformedCoordsArray&,
|
| - const TextureSamplerArray&) override;
|
| + virtual void emitCode(EmitArgs&) override;
|
|
|
| static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProcessorKeyBuilder*);
|
|
|
| @@ -116,22 +111,17 @@ GLCircleEffect::GLCircleEffect(const GrProcessor&) {
|
| fPrevRadius = -1.f;
|
| }
|
|
|
| -void GLCircleEffect::emitCode(GrGLFPBuilder* builder,
|
| - const GrFragmentProcessor& fp,
|
| - const char* outputColor,
|
| - const char* inputColor,
|
| - const TransformedCoordsArray&,
|
| - const TextureSamplerArray& samplers) {
|
| - const CircleEffect& ce = fp.cast<CircleEffect>();
|
| +void GLCircleEffect::emitCode(EmitArgs& args) {
|
| + const CircleEffect& ce = args.fFp.cast<CircleEffect>();
|
| const char *circleName;
|
| // The circle uniform is (center.x, center.y, radius + 0.5, 1 / (radius + 0.5)) for regular
|
| // fills and (..., radius - 0.5, 1 / (radius - 0.5)) for inverse fills.
|
| - fCircleUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
|
| + fCircleUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
|
| kVec4f_GrSLType, kDefault_GrSLPrecision,
|
| "circle",
|
| &circleName);
|
|
|
| - GrGLFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder();
|
| + GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder();
|
| const char* fragmentPos = fsBuilder->fragmentPosition();
|
|
|
| SkASSERT(kHairlineAA_GrProcessorEdgeType != ce.getEdgeType());
|
| @@ -152,8 +142,8 @@ void GLCircleEffect::emitCode(GrGLFPBuilder* builder,
|
| fsBuilder->codeAppend("\t\td = d > 0.5 ? 1.0 : 0.0;\n");
|
| }
|
|
|
| - fsBuilder->codeAppendf("\t\t%s = %s;\n", outputColor,
|
| - (GrGLSLExpr4(inputColor) * GrGLSLExpr1("d")).c_str());
|
| + fsBuilder->codeAppendf("\t\t%s = %s;\n", args.fOutputColor,
|
| + (GrGLSLExpr4(args.fInputColor) * GrGLSLExpr1("d")).c_str());
|
| }
|
|
|
| void GLCircleEffect::GenKey(const GrProcessor& processor, const GrGLSLCaps&,
|
| @@ -273,12 +263,7 @@ class GLEllipseEffect : public GrGLFragmentProcessor {
|
| public:
|
| GLEllipseEffect(const GrProcessor&);
|
|
|
| - virtual void emitCode(GrGLFPBuilder* builder,
|
| - const GrFragmentProcessor& fp,
|
| - const char* outputColor,
|
| - const char* inputColor,
|
| - const TransformedCoordsArray&,
|
| - const TextureSamplerArray&) override;
|
| + virtual void emitCode(EmitArgs&) override;
|
|
|
| static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProcessorKeyBuilder*);
|
|
|
| @@ -296,21 +281,16 @@ GLEllipseEffect::GLEllipseEffect(const GrProcessor& effect) {
|
| fPrevRadii.fX = -1.f;
|
| }
|
|
|
| -void GLEllipseEffect::emitCode(GrGLFPBuilder* builder,
|
| - const GrFragmentProcessor& fp,
|
| - const char* outputColor,
|
| - const char* inputColor,
|
| - const TransformedCoordsArray&,
|
| - const TextureSamplerArray& samplers) {
|
| - const EllipseEffect& ee = fp.cast<EllipseEffect>();
|
| +void GLEllipseEffect::emitCode(EmitArgs& args) {
|
| + const EllipseEffect& ee = args.fFp.cast<EllipseEffect>();
|
| const char *ellipseName;
|
| // The ellipse uniform is (center.x, center.y, 1 / rx^2, 1 / ry^2)
|
| - fEllipseUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
|
| + fEllipseUniform = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility,
|
| kVec4f_GrSLType, kDefault_GrSLPrecision,
|
| "ellipse",
|
| &ellipseName);
|
|
|
| - GrGLFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder();
|
| + GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder();
|
| const char* fragmentPos = fsBuilder->fragmentPosition();
|
|
|
| // d is the offset to the ellipse center
|
| @@ -341,8 +321,8 @@ void GLEllipseEffect::emitCode(GrGLFPBuilder* builder,
|
| SkFAIL("Hairline not expected here.");
|
| }
|
|
|
| - fsBuilder->codeAppendf("\t\t%s = %s;\n", outputColor,
|
| - (GrGLSLExpr4(inputColor) * GrGLSLExpr1("alpha")).c_str());
|
| + fsBuilder->codeAppendf("\t\t%s = %s;\n", args.fOutputColor,
|
| + (GrGLSLExpr4(args.fInputColor) * GrGLSLExpr1("alpha")).c_str());
|
| }
|
|
|
| void GLEllipseEffect::GenKey(const GrProcessor& effect, const GrGLSLCaps&,
|
|
|