aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/gpu/effects/GrXfermodeFragmentProcessor.cpp19
1 files changed, 3 insertions, 16 deletions
diff --git a/src/gpu/effects/GrXfermodeFragmentProcessor.cpp b/src/gpu/effects/GrXfermodeFragmentProcessor.cpp
index 94491c976e..ad0427174f 100644
--- a/src/gpu/effects/GrXfermodeFragmentProcessor.cpp
+++ b/src/gpu/effects/GrXfermodeFragmentProcessor.cpp
@@ -146,14 +146,12 @@ private:
}
GrColor4f constantOutputForConstantInput(GrColor4f input) const override {
- float alpha = input.fRGBA[3];
- input = input.opaque();
GrColor4f srcColor = ConstantOutputForConstantInput(this->childProcessor(0), input);
GrColor4f dstColor = ConstantOutputForConstantInput(this->childProcessor(1), input);
SkPM4f src = GrColor4fToSkPM4f(srcColor);
SkPM4f dst = GrColor4fToSkPM4f(dstColor);
SkPM4f res = SkBlendMode_Apply(fMode, src, dst);
- return SkPM4fToGrColor4f(res).mulByScalar(alpha);
+ return SkPM4fToGrColor4f(res);
}
GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
@@ -205,18 +203,12 @@ void GLComposeTwoFragmentProcessor::emitCode(EmitArgs& args) {
GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
const ComposeTwoFragmentProcessor& cs = args.fFp.cast<ComposeTwoFragmentProcessor>();
- const char* inputColor = nullptr;
- if (args.fInputColor) {
- inputColor = "inputColor";
- fragBuilder->codeAppendf("vec4 inputColor = vec4(%s.rgb, 1.0);", args.fInputColor);
- }
-
// declare outputColor and emit the code for each of the two children
SkString srcColor("xfer_src");
- this->emitChild(0, inputColor, &srcColor, args);
+ this->emitChild(0, args.fInputColor, &srcColor, args);
SkString dstColor("xfer_dst");
- this->emitChild(1, inputColor, &dstColor, args);
+ this->emitChild(1, args.fInputColor, &dstColor, args);
// emit blend code
SkBlendMode mode = cs.getMode();
@@ -226,11 +218,6 @@ void GLComposeTwoFragmentProcessor::emitCode(EmitArgs& args) {
dstColor.c_str(),
args.fOutputColor,
mode);
-
- // re-multiply the output color by the input color's alpha
- if (args.fInputColor) {
- fragBuilder->codeAppendf("%s *= %s.a;", args.fOutputColor, args.fInputColor);
- }
}
sk_sp<GrFragmentProcessor> GrXfermodeFragmentProcessor::MakeFromTwoProcessors(