Index: src/gpu/effects/GrPorterDuffXferProcessor.cpp |
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp |
index c443e1e9925725e49cd6655191544d1cf92b75a3..cdd21627d4f9bda9a4f68c863273748f0e25eca3 100644 |
--- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp |
+++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp |
@@ -739,6 +739,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 && |
@@ -798,6 +801,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; |
} |
@@ -854,6 +860,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 && |