Chromium Code Reviews| Index: src/core/SkXfermode.cpp |
| diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp |
| index 4a3ec397022e34a6201feeafde73032a7915332a..adbb955c92e1747e405714b5b6f2117418c9f394 100644 |
| --- a/src/core/SkXfermode.cpp |
| +++ b/src/core/SkXfermode.cpp |
| @@ -6,7 +6,6 @@ |
| * found in the LICENSE file. |
| */ |
| - |
| #include "SkXfermode.h" |
| #include "SkXfermode_opts_SSE2.h" |
| #include "SkXfermode_proccoeff.h" |
| @@ -680,16 +679,42 @@ bool SkXfermode::asFragmentProcessor(GrFragmentProcessor**, GrTexture*) const { |
| return false; |
| } |
| -bool SkXfermode::asFragmentProcessorOrCoeff(SkXfermode* xfermode, GrFragmentProcessor** fp, |
| - Coeff* src, Coeff* dst, GrTexture* background) { |
| +bool SkXfermode::asXPFactory(GrXPFactory**) const { |
| + return false; |
| +} |
| + |
| + |
| +#if SK_SUPPORT_GPU |
| +#include "effects/GrPorterDuffXferProcessor.h" |
| + |
| +bool SkXfermode::AsFragmentProcessorOrXPFactory(SkXfermode* xfermode, |
| + GrFragmentProcessor** fp, |
| + GrXPFactory** xpf, |
| + Coeff* src, Coeff* dst) { |
| if (NULL == xfermode) { |
| - return ModeAsCoeff(kSrcOver_Mode, src, dst); |
| + SkAssertResult(ModeAsCoeff(kSrcOver_Mode, src, dst)); |
| + *xpf = GrPorterDuffXPFactory::Create(*src, *dst); |
| + return true; |
| } else if (xfermode->asCoeff(src, dst)) { |
| + *xpf = GrPorterDuffXPFactory::Create(*src, *dst); |
| + return true; |
| + } else if (xfermode->asXPFactory(xpf)) { |
| + *src = SkXfermode::kOne_Coeff; |
| + *src = SkXfermode::kZero_Coeff; |
|
bsalomon
2014/12/02 15:36:32
Should this be dst?
Is it possible to stop having
egdaniel
2014/12/02 18:09:51
Yeah should be dst. All these src and dst things g
|
| return true; |
| } else { |
| - return xfermode->asFragmentProcessor(fp, background); |
| + return xfermode->asFragmentProcessor(fp); |
| } |
| } |
| +#else |
| +bool SkXfermode::AsFragmentProcessorOrXPFactory(SkXfermode* xfermode, |
| + GrFragmentProcessor** fp, |
| + GrXPFactory** xpf, |
| + Coeff* src, Coeff* dst, |
| + GrTexture* background) { |
| + return false; |
| +} |
| +#endif |
| SkPMColor SkXfermode::xferColor(SkPMColor src, SkPMColor dst) const{ |
| // no-op. subclasses should override this |