| Index: src/gpu/effects/GrCustomXfermode.cpp
|
| diff --git a/src/gpu/effects/GrCustomXfermode.cpp b/src/gpu/effects/GrCustomXfermode.cpp
|
| index 04ff4a746ba733692ddab05ebb012f94ee341afb..a8d0286343f9411e617a730bc2a8f125200eebcc 100644
|
| --- a/src/gpu/effects/GrCustomXfermode.cpp
|
| +++ b/src/gpu/effects/GrCustomXfermode.cpp
|
| @@ -54,12 +54,16 @@ static GrBlendEquation hw_blend_equation(SkXfermode::Mode mode) {
|
| }
|
|
|
| static bool can_use_hw_blend_equation(GrBlendEquation equation,
|
| - const GrProcOptInfo& coveragePOI,
|
| + const GrPipelineOptimizations& opt,
|
| const GrCaps& caps) {
|
| +
|
| if (!caps.advancedBlendEquationSupport()) {
|
| return false;
|
| }
|
| - if (coveragePOI.isFourChannelOutput()) {
|
| + if (opt.fOverrides.fUsePLSDstRead) {
|
| + return false;
|
| + }
|
| + if (opt.fCoveragePOI.isFourChannelOutput()) {
|
| return false; // LCD coverage must be applied after the blend equation.
|
| }
|
| if (caps.canUseAdvancedBlendEquation(equation)) {
|
| @@ -371,7 +375,7 @@ GrXferProcessor* CustomXPFactory::onCreateXferProcessor(const GrCaps& caps,
|
| const GrPipelineOptimizations& opt,
|
| bool hasMixedSamples,
|
| const DstTexture* dstTexture) const {
|
| - if (can_use_hw_blend_equation(fHWBlendEquation, opt.fCoveragePOI, caps)) {
|
| + if (can_use_hw_blend_equation(fHWBlendEquation, opt, caps)) {
|
| SkASSERT(!dstTexture || !dstTexture->texture());
|
| return new CustomXP(fMode, fHWBlendEquation);
|
| }
|
| @@ -381,7 +385,7 @@ GrXferProcessor* CustomXPFactory::onCreateXferProcessor(const GrCaps& caps,
|
| bool CustomXPFactory::willReadDstColor(const GrCaps& caps,
|
| const GrPipelineOptimizations& optimizations,
|
| bool hasMixedSamples) const {
|
| - return !can_use_hw_blend_equation(fHWBlendEquation, optimizations.fCoveragePOI, caps);
|
| + return !can_use_hw_blend_equation(fHWBlendEquation, optimizations, caps);
|
| }
|
|
|
| void CustomXPFactory::getInvariantBlendedColor(const GrProcOptInfo& colorPOI,
|
|
|