aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrXferProcessor.cpp
diff options
context:
space:
mode:
authorGravatar egdaniel <egdaniel@google.com>2015-05-10 08:45:18 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-05-10 08:45:18 -0700
commitc19cdc254cc08f334b00c3b9fdb703818c8ca681 (patch)
treeb3c7358359884c80967e8c0f21c9d329d198a987 /src/gpu/GrXferProcessor.cpp
parentffb3f6817d2ec141fcb5e267a30ecb32010ed8f1 (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.cpp21
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() &&