Index: src/core/SkComposeShader.cpp |
diff --git a/src/core/SkComposeShader.cpp b/src/core/SkComposeShader.cpp |
index b45a81e2a1438bd8f51f515810bd740593a70cb5..530e651e6f660e5eff2f4a828796f5da5a8f020d 100644 |
--- a/src/core/SkComposeShader.cpp |
+++ b/src/core/SkComposeShader.cpp |
@@ -283,18 +283,23 @@ void GrGLComposeEffect::emitCode(EmitArgs& args) { |
fsBuilder->codeAppendf("float %s = %s.a;\n", inputAlpha.c_str(), args.fInputColor); |
fsBuilder->codeAppendf("%s /= %s.a;\n", args.fInputColor, args.fInputColor); |
- // emit the code of the two child shaders |
- SkString mangledOutputColorA; |
- this->emitChild(0, args.fInputColor, &mangledOutputColorA, args); |
- SkString mangledOutputColorB; |
- this->emitChild(1, args.fInputColor, &mangledOutputColorB, args); |
+ // declare outputColor and emit the code for each of the two children |
+ SkString outputColorA(args.fOutputColor); |
+ outputColorA.append("_dst"); |
bsalomon
2015/08/31 20:41:38
Your code should already be enclosed in braces so
wangyix
2015/08/31 22:01:22
Done.
|
+ fsBuilder->codeAppendf("vec4 %s;\n", outputColorA.c_str()); |
+ this->emitChild(0, args.fInputColor, outputColorA.c_str(), args); |
+ |
+ SkString outputColorB(args.fOutputColor); |
+ outputColorB.append("_src"); |
+ fsBuilder->codeAppendf("vec4 %s;\n", outputColorB.c_str()); |
+ this->emitChild(1, args.fInputColor, outputColorB.c_str(), args); |
// emit blend code |
SkXfermode::Mode mode = cs.getMode(); |
fsBuilder->codeAppend("{\n"); |
fsBuilder->codeAppendf("// Compose Xfer Mode: %s\n", SkXfermode::ModeName(mode)); |
- GrGLBlend::AppendPorterDuffBlend(fsBuilder, mangledOutputColorB.c_str(), |
- mangledOutputColorA.c_str(), args.fOutputColor, mode); |
+ GrGLBlend::AppendPorterDuffBlend(fsBuilder, outputColorB.c_str(), outputColorA.c_str(), |
+ args.fOutputColor, mode); |
fsBuilder->codeAppend("}\n"); |
// re-multiply the output color by the input color's alpha |