| Index: src/gpu/GrXferProcessor.cpp
|
| diff --git a/src/gpu/GrXferProcessor.cpp b/src/gpu/GrXferProcessor.cpp
|
| index 61cacac62ee8b6d1188cf3d9083de523d2b415b0..defa884bd2d824e11d5813743ff5808e9c9fc1bb 100644
|
| --- a/src/gpu/GrXferProcessor.cpp
|
| +++ b/src/gpu/GrXferProcessor.cpp
|
| @@ -32,6 +32,19 @@ void GrXferProcessor::getGLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBu
|
| this->onGetGLProcessorKey(caps, b);
|
| }
|
|
|
| +bool GrXferProcessor::willNeedXferBarrier(const GrRenderTarget* rt,
|
| + const GrDrawTargetCaps& caps,
|
| + GrXferBarrierType* outBarrierType) const {
|
| + if (static_cast<const GrSurface*>(rt) == this->getDstCopyTexture()) {
|
| + // Texture barriers are required when a shader reads and renders to the same texture.
|
| + SkASSERT(rt);
|
| + SkASSERT(caps.textureBarrierSupport());
|
| + *outBarrierType = kTexture_GrXferBarrierType;
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| GrXferProcessor* GrXPFactory::createXferProcessor(const GrProcOptInfo& colorPOI,
|
|
|