diff options
author | 2015-05-10 08:45:18 -0700 | |
---|---|---|
committer | 2015-05-10 08:45:18 -0700 | |
commit | c19cdc254cc08f334b00c3b9fdb703818c8ca681 (patch) | |
tree | b3c7358359884c80967e8c0f21c9d329d198a987 /src/gpu/GrXferProcessor.cpp | |
parent | ffb3f6817d2ec141fcb5e267a30ecb32010ed8f1 (diff) |
Only discard for XP dstCopies if we have a coverage value.
TBR=bsalomon@google.com
BUG=skia:
Review URL: https://codereview.chromium.org/1125283005
Diffstat (limited to 'src/gpu/GrXferProcessor.cpp')
-rw-r--r-- | src/gpu/GrXferProcessor.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/gpu/GrXferProcessor.cpp b/src/gpu/GrXferProcessor.cpp index 243b9feb3f..bc79b2dbe1 100644 --- a/src/gpu/GrXferProcessor.cpp +++ b/src/gpu/GrXferProcessor.cpp @@ -8,11 +8,13 @@ #include "GrXferProcessor.h" #include "gl/GrGLCaps.h" -GrXferProcessor::GrXferProcessor() : fWillReadDstColor(false), fDstCopyTextureOffset() { +GrXferProcessor::GrXferProcessor() + : fWillReadDstColor(false), fReadsCoverage(true), fDstCopyTextureOffset() { } GrXferProcessor::GrXferProcessor(const GrDeviceCoordTexture* dstCopy, bool willReadDstColor) : fWillReadDstColor(willReadDstColor) + , fReadsCoverage(true) , fDstCopyTextureOffset() { if (dstCopy && dstCopy->texture()) { fDstCopy.reset(dstCopy->texture()); @@ -22,6 +24,23 @@ GrXferProcessor::GrXferProcessor(const GrDeviceCoordTexture* dstCopy, bool willR } } +GrXferProcessor::OptFlags GrXferProcessor::getOptimizations(const GrProcOptInfo& colorPOI, + const GrProcOptInfo& coveragePOI, + bool doesStencilWrite, + GrColor* overrideColor, + const GrDrawTargetCaps& caps) { + GrXferProcessor::OptFlags flags = this->onGetOptimizations(colorPOI, + coveragePOI, + doesStencilWrite, + overrideColor, + caps); + + if (flags & GrXferProcessor::kIgnoreCoverage_OptFlag) { + fReadsCoverage = false; + } + return flags; +} + void GrXferProcessor::getGLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) const { uint32_t key = this->willReadDstColor() ? 0x1 : 0x0; if (this->getDstCopyTexture() && |