| Index: src/gpu/effects/GrPorterDuffXferProcessor.cpp
|
| diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
|
| index 2f0564786d0f6a434cd399b87c71bf4ed5352a5d..4245caafed06339c622c077147a65dcc592210fe 100644
|
| --- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp
|
| +++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
|
| @@ -382,44 +382,44 @@ private:
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| static void append_color_output(const PorterDuffXferProcessor& xp,
|
| - GrGLSLXPFragmentBuilder* fsBuilder,
|
| + GrGLSLXPFragmentBuilder* fragBuilder,
|
| BlendFormula::OutputType outputType, const char* output,
|
| const char* inColor, const char* inCoverage) {
|
| switch (outputType) {
|
| case BlendFormula::kNone_OutputType:
|
| - fsBuilder->codeAppendf("%s = vec4(0.0);", output);
|
| + fragBuilder->codeAppendf("%s = vec4(0.0);", output);
|
| break;
|
| case BlendFormula::kCoverage_OutputType:
|
| // We can have a coverage formula while not reading coverage if there are mixed samples.
|
| - fsBuilder->codeAppendf("%s = %s;",
|
| + fragBuilder->codeAppendf("%s = %s;",
|
| output, xp.readsCoverage() ? inCoverage : "vec4(1.0)");
|
| break;
|
| case BlendFormula::kModulate_OutputType:
|
| if (xp.readsCoverage()) {
|
| - fsBuilder->codeAppendf("%s = %s * %s;", output, inColor, inCoverage);
|
| + fragBuilder->codeAppendf("%s = %s * %s;", output, inColor, inCoverage);
|
| } else {
|
| - fsBuilder->codeAppendf("%s = %s;", output, inColor);
|
| + fragBuilder->codeAppendf("%s = %s;", output, inColor);
|
| }
|
| break;
|
| case BlendFormula::kSAModulate_OutputType:
|
| if (xp.readsCoverage()) {
|
| - fsBuilder->codeAppendf("%s = %s.a * %s;", output, inColor, inCoverage);
|
| + fragBuilder->codeAppendf("%s = %s.a * %s;", output, inColor, inCoverage);
|
| } else {
|
| - fsBuilder->codeAppendf("%s = %s;", output, inColor);
|
| + fragBuilder->codeAppendf("%s = %s;", output, inColor);
|
| }
|
| break;
|
| case BlendFormula::kISAModulate_OutputType:
|
| if (xp.readsCoverage()) {
|
| - fsBuilder->codeAppendf("%s = (1.0 - %s.a) * %s;", output, inColor, inCoverage);
|
| + fragBuilder->codeAppendf("%s = (1.0 - %s.a) * %s;", output, inColor, inCoverage);
|
| } else {
|
| - fsBuilder->codeAppendf("%s = vec4(1.0 - %s.a);", output, inColor);
|
| + fragBuilder->codeAppendf("%s = vec4(1.0 - %s.a);", output, inColor);
|
| }
|
| break;
|
| case BlendFormula::kISCModulate_OutputType:
|
| if (xp.readsCoverage()) {
|
| - fsBuilder->codeAppendf("%s = (vec4(1.0) - %s) * %s;", output, inColor, inCoverage);
|
| + fragBuilder->codeAppendf("%s = (vec4(1.0) - %s) * %s;", output, inColor, inCoverage);
|
| } else {
|
| - fsBuilder->codeAppendf("%s = vec4(1.0) - %s;", output, inColor);
|
| + fragBuilder->codeAppendf("%s = vec4(1.0) - %s;", output, inColor);
|
| }
|
| break;
|
| default:
|
| @@ -441,14 +441,14 @@ public:
|
| private:
|
| void emitOutputsForBlendState(const EmitArgs& args) override {
|
| const PorterDuffXferProcessor& xp = args.fXP.cast<PorterDuffXferProcessor>();
|
| - GrGLSLXPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
|
| + GrGLSLXPFragmentBuilder* fragBuilder = args.fXPFragBuilder;
|
|
|
| BlendFormula blendFormula = xp.getBlendFormula();
|
| if (blendFormula.hasSecondaryOutput()) {
|
| - append_color_output(xp, fsBuilder, blendFormula.fSecondaryOutputType,
|
| + append_color_output(xp, fragBuilder, blendFormula.fSecondaryOutputType,
|
| args.fOutputSecondary, args.fInputColor, args.fInputCoverage);
|
| }
|
| - append_color_output(xp, fsBuilder, blendFormula.fPrimaryOutputType,
|
| + append_color_output(xp, fragBuilder, blendFormula.fPrimaryOutputType,
|
| args.fOutputPrimary, args.fInputColor, args.fInputCoverage);
|
| }
|
|
|
| @@ -544,12 +544,15 @@ public:
|
| }
|
|
|
| private:
|
| - void emitBlendCodeForDstRead(GrGLSLXPBuilder* pb, const char* srcColor, const char* dstColor,
|
| - const char* outColor, const GrXferProcessor& proc) override {
|
| + void emitBlendCodeForDstRead(GrGLSLXPBuilder* pb,
|
| + GrGLSLXPFragmentBuilder* fragBuilder,
|
| + const char* srcColor,
|
| + const char* dstColor,
|
| + const char* outColor,
|
| + const GrXferProcessor& proc) override {
|
| const ShaderPDXferProcessor& xp = proc.cast<ShaderPDXferProcessor>();
|
| - GrGLSLXPFragmentBuilder* fsBuilder = pb->getFragmentShaderBuilder();
|
|
|
| - GrGLSLBlend::AppendMode(fsBuilder, srcColor, dstColor, outColor, xp.getXfermode());
|
| + GrGLSLBlend::AppendMode(fragBuilder, srcColor, dstColor, outColor, xp.getXfermode());
|
| }
|
|
|
| void onSetData(const GrGLSLProgramDataManager&, const GrXferProcessor&) override {}
|
| @@ -625,9 +628,9 @@ public:
|
|
|
| private:
|
| void emitOutputsForBlendState(const EmitArgs& args) override {
|
| - GrGLSLXPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
|
| - fsBuilder->codeAppendf("%s = %s * %s;", args.fOutputPrimary, args.fInputColor,
|
| - args.fInputCoverage);
|
| + GrGLSLXPFragmentBuilder* fragBuilder = args.fXPFragBuilder;
|
| + fragBuilder->codeAppendf("%s = %s * %s;", args.fOutputPrimary, args.fInputColor,
|
| + args.fInputCoverage);
|
| }
|
|
|
| void onSetData(const GrGLSLProgramDataManager&, const GrXferProcessor&) override {};
|
|
|