Index: src/gpu/effects/GrPorterDuffXferProcessor.cpp |
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp |
index 94d3dd67a93ae8df8da4e06b53d41286eddae558..1758a87e7c0c8fe4e22042854eb7628379d95784 100644 |
--- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp |
+++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp |
@@ -748,6 +748,9 @@ GrPorterDuffXPFactory::onCreateXferProcessor(const GrCaps& caps, |
const GrPipelineOptimizations& optimizations, |
bool hasMixedSamples, |
const DstTexture* dstTexture) const { |
+ if (optimizations.fOverrides.fUsePLSDstRead) { |
+ return new ShaderPDXferProcessor(dstTexture, hasMixedSamples, fXfermode); |
+ } |
BlendFormula blendFormula; |
if (optimizations.fCoveragePOI.isFourChannelOutput()) { |
if (SkXfermode::kSrcOver_Mode == fXfermode && |
@@ -807,6 +810,9 @@ void GrPorterDuffXPFactory::getInvariantBlendedColor(const GrProcOptInfo& colorP |
bool GrPorterDuffXPFactory::willReadDstColor(const GrCaps& caps, |
const GrPipelineOptimizations& optimizations, |
bool hasMixedSamples) const { |
+ if (INHERITED::willReadDstColor(caps, optimizations, hasMixedSamples)) { |
+ return true; |
+ } |
if (caps.shaderCaps()->dualSourceBlendingSupport()) { |
return false; |
} |
@@ -863,6 +869,9 @@ GrXferProcessor* GrPorterDuffXPFactory::CreateSrcOverXferProcessor( |
const GrPipelineOptimizations& optimizations, |
bool hasMixedSamples, |
const GrXferProcessor::DstTexture* dstTexture) { |
+ if (optimizations.fOverrides.fUsePLSDstRead) { |
+ return new ShaderPDXferProcessor(dstTexture, hasMixedSamples, SkXfermode::kSrcOver_Mode); |
+ } |
if (!optimizations.fCoveragePOI.isFourChannelOutput() && |
!(optimizations.fCoveragePOI.isSolidWhite() && |
!hasMixedSamples && |