aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/gpu/GrPipeline.cpp8
-rw-r--r--src/gpu/GrXferProcessor.h10
-rw-r--r--src/gpu/effects/GrPorterDuffXferProcessor.cpp3
-rw-r--r--tests/GrPorterDuffTest.cpp22
4 files changed, 10 insertions, 33 deletions
diff --git a/src/gpu/GrPipeline.cpp b/src/gpu/GrPipeline.cpp
index 6de106c8dd..51b6666148 100644
--- a/src/gpu/GrPipeline.cpp
+++ b/src/gpu/GrPipeline.cpp
@@ -78,14 +78,6 @@ GrPipeline* GrPipeline::CreateAt(void* memory, const CreateArgs& args,
*args.fAnalysis, args.fUserStencil->doesWrite(args.fAppliedClip->hasStencilClip()),
&overrideColor, *args.fCaps);
- // When path rendering the stencil settings are not always set on the GrPipelineBuilder
- // so we must check the draw type. In cases where we will skip drawing we simply return a
- // null GrPipeline.
- if (GrXferProcessor::kSkipDraw_OptFlag & optFlags) {
- pipeline->~GrPipeline();
- return nullptr;
- }
-
// No need to have an override color if it isn't even going to be used.
if (SkToBool(GrXferProcessor::kIgnoreColor_OptFlag & optFlags)) {
overrideColor = GrColor_ILLEGAL;
diff --git a/src/gpu/GrXferProcessor.h b/src/gpu/GrXferProcessor.h
index 5ce06571a2..e837ed00dd 100644
--- a/src/gpu/GrXferProcessor.h
+++ b/src/gpu/GrXferProcessor.h
@@ -107,21 +107,17 @@ public:
*/
enum OptFlags {
/**
- * The draw can be skipped completely.
- */
- kSkipDraw_OptFlag = 0x1,
- /**
* GrXferProcessor will ignore color, thus no need to provide
*/
- kIgnoreColor_OptFlag = 0x2,
+ kIgnoreColor_OptFlag = 0x1,
/**
* Clear color stages and override input color to that returned by getOptimizations
*/
- kOverrideColor_OptFlag = 0x4,
+ kOverrideColor_OptFlag = 0x2,
/**
* Can tweak alpha for coverage. Currently this flag should only be used by a GrDrawOp.
*/
- kCanTweakAlphaForCoverage_OptFlag = 0x8,
+ kCanTweakAlphaForCoverage_OptFlag = 0x4,
};
static const OptFlags kNone_OptFlags = (OptFlags)0;
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
index 4803c2d6ac..4813c9ddf0 100644
--- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp
+++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
@@ -456,9 +456,6 @@ GrXferProcessor::OptFlags PorterDuffXferProcessor::onGetOptimizations(
const GrCaps& caps) const {
GrXferProcessor::OptFlags optFlags = GrXferProcessor::kNone_OptFlags;
if (!fBlendFormula.modifiesDst()) {
- if (!doesStencilWrite) {
- optFlags |= GrXferProcessor::kSkipDraw_OptFlag;
- }
optFlags |= (GrXferProcessor::kIgnoreColor_OptFlag |
GrXferProcessor::kCanTweakAlphaForCoverage_OptFlag);
} else {
diff --git a/tests/GrPorterDuffTest.cpp b/tests/GrPorterDuffTest.cpp
index d87e252141..bfbd97e387 100644
--- a/tests/GrPorterDuffTest.cpp
+++ b/tests/GrPorterDuffTest.cpp
@@ -58,7 +58,6 @@ enum {
enum {
kNone_OptFlags = GrXferProcessor::kNone_OptFlags,
- kSkipDraw_OptFlag = GrXferProcessor::kSkipDraw_OptFlag,
kIgnoreColor_OptFlag = GrXferProcessor::kIgnoreColor_OptFlag,
kCanTweakAlphaForCoverage_OptFlag = GrXferProcessor::kCanTweakAlphaForCoverage_OptFlag
};
@@ -127,8 +126,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps)
break;
case SkBlendMode::kDst:
TEST_ASSERT(xpi.fReadsDst);
- TEST_ASSERT((kSkipDraw_OptFlag |
- kIgnoreColor_OptFlag |
+ TEST_ASSERT((kIgnoreColor_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -297,8 +295,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const
break;
case SkBlendMode::kDst:
TEST_ASSERT(xpi.fReadsDst);
- TEST_ASSERT((kSkipDraw_OptFlag |
- kIgnoreColor_OptFlag |
+ TEST_ASSERT((kIgnoreColor_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -468,8 +465,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
break;
case SkBlendMode::kDst:
TEST_ASSERT(xpi.fReadsDst);
- TEST_ASSERT((kSkipDraw_OptFlag |
- kIgnoreColor_OptFlag |
+ TEST_ASSERT((kIgnoreColor_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -640,8 +636,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const
break;
case SkBlendMode::kDst:
TEST_ASSERT(xpi.fReadsDst);
- TEST_ASSERT((kSkipDraw_OptFlag |
- kIgnoreColor_OptFlag |
+ TEST_ASSERT((kIgnoreColor_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -682,8 +677,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const
break;
case SkBlendMode::kDstIn:
TEST_ASSERT(xpi.fReadsDst);
- TEST_ASSERT((kSkipDraw_OptFlag |
- kIgnoreColor_OptFlag |
+ TEST_ASSERT((kIgnoreColor_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -814,8 +808,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
break;
case SkBlendMode::kDst:
TEST_ASSERT(xpi.fReadsDst);
- TEST_ASSERT((kSkipDraw_OptFlag |
- kIgnoreColor_OptFlag |
+ TEST_ASSERT((kIgnoreColor_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -856,8 +849,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
break;
case SkBlendMode::kDstIn:
TEST_ASSERT(xpi.fReadsDst);
- TEST_ASSERT((kSkipDraw_OptFlag |
- kIgnoreColor_OptFlag |
+ TEST_ASSERT((kIgnoreColor_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);