diff options
-rw-r--r-- | src/gpu/GrPipeline.cpp | 8 | ||||
-rw-r--r-- | src/gpu/GrXferProcessor.h | 10 | ||||
-rw-r--r-- | src/gpu/effects/GrPorterDuffXferProcessor.cpp | 3 | ||||
-rw-r--r-- | tests/GrPorterDuffTest.cpp | 22 |
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); |