diff options
author | Brian Salomon <bsalomon@google.com> | 2017-03-16 19:51:42 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-16 19:51:55 +0000 |
commit | c48af934608bbb65650641f66adb51f2102d4274 (patch) | |
tree | 7853ab4fc62a179b8192a5c25db3472dd5fe6b9a /tests | |
parent | a839fc0b63bd68682dcf51abc77078bfea48c1a1 (diff) |
Revert "Remove GrPipeline from GrDrawOp."
This reverts commit 2bf4b3a97b770811d9e0558dbbfbdb57cfafbdb7.
Reason for revert: nanobench assertion
Original change's description:
> Remove GrPipeline from GrDrawOp.
>
> GrDrawOp subclasses are now free to construct their pipelines at flush time and now in theory could use multiple GrPipelines for multipass rendering.
>
> GrProcessorSet may be used to retain the processors from a GrPaint with "pending execution" style refs.
>
> NVPR and Instanced rendering are updated to create their pipelines at flush time without a GrPipelineBuilder.
>
> The monolithic pipeline creation/management that was on GrDrawOp is moved to GrMeshDrawOp. However, this is temporary and will be removed in coming changes.
>
> Change-Id: I124282e3cea5d070970b5460c8a679fcaf7a8eff
> Reviewed-on: https://skia-review.googlesource.com/7279
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
>
TBR=bsalomon@google.com,robertphillips@google.com,csmartdalton@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I1bc64f6cbbd5f482417637a034342c2b5371dc5c
Reviewed-on: https://skia-review.googlesource.com/9817
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/GpuSampleLocationsTest.cpp | 2 | ||||
-rw-r--r-- | tests/GrPorterDuffTest.cpp | 165 |
2 files changed, 85 insertions, 82 deletions
diff --git a/tests/GpuSampleLocationsTest.cpp b/tests/GpuSampleLocationsTest.cpp index 5cb9b606db..8808b1d8cb 100644 --- a/tests/GpuSampleLocationsTest.cpp +++ b/tests/GpuSampleLocationsTest.cpp @@ -96,12 +96,14 @@ static void construct_dummy_pipeline(GrRenderTargetContext* dc, GrPipeline* pipe GrScissorState dummyScissor; GrWindowRectsState dummyWindows; + GrAppliedClip dummyAppliedClip; GrProcessorSet::FragmentProcessorAnalysis analysis; GrPipeline::InitArgs args; dummyBuilder.getPipelineInitArgs(&args); args.fRenderTarget = dc->accessRenderTarget(); args.fAnalysis = &analysis; args.fCaps = dc->caps(); + args.fAppliedClip = &dummyAppliedClip; args.fDstTexture = GrXferProcessor::DstTexture(); pipeline->init(args); } diff --git a/tests/GrPorterDuffTest.cpp b/tests/GrPorterDuffTest.cpp index de1843813a..ddca03a497 100644 --- a/tests/GrPorterDuffTest.cpp +++ b/tests/GrPorterDuffTest.cpp @@ -9,6 +9,7 @@ #if SK_SUPPORT_GPU +#include "GrAppliedClip.h" #include "GrContextFactory.h" #include "GrContextOptions.h" #include "GrGpu.h" @@ -67,10 +68,7 @@ public: XPInfo(skiatest::Reporter* reporter, SkBlendMode xfermode, const GrCaps& caps, const GrProcessorSet::FragmentProcessorAnalysis& analysis) { const GrXPFactory* xpf = GrPorterDuffXPFactory::Get(xfermode); - // The GrXPFactory query assumes no coverage. - fCanCombineOverlappedStencilAndCover = - !analysis.hasCoverage() && GrXPFactory::CanCombineOverlappedStencilAndCover( - xpf, analysis.isOutputColorOpaque()); + fReadsDst = GrXPFactory::WillReadDst(xpf, analysis); sk_sp<GrXferProcessor> xp(xpf->createXferProcessor(analysis, false, nullptr, caps)); TEST_ASSERT(!GrXPFactory::WillNeedDstTexture(xpf, caps, analysis)); fOptFlags = xp->getOptimizations(analysis); @@ -80,7 +78,7 @@ public: TEST_ASSERT(xp->hasSecondaryOutput() == GrBlendCoeffRefsSrc2(fBlendInfo.fDstBlend)); } - bool fCanCombineOverlappedStencilAndCover; + bool fReadsDst; int fOptFlags; int fPrimaryOutputType; int fSecondaryOutputType; @@ -106,7 +104,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, analysis); switch (xfermode) { case SkBlendMode::kClear: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -116,7 +114,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrc: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType); @@ -126,7 +124,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDst: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag | kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); @@ -137,7 +135,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOver: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kSAModulate_OutputType == xpi.fSecondaryOutputType); @@ -147,7 +145,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOver: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -157,7 +155,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType); @@ -167,7 +165,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kISAModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -177,7 +175,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOut: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType); @@ -187,7 +185,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOut: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kSAModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -197,7 +195,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kSAModulate_OutputType == xpi.fSecondaryOutputType); @@ -207,7 +205,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kISAModulate_OutputType == xpi.fSecondaryOutputType); @@ -217,7 +215,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kXor: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kSAModulate_OutputType == xpi.fSecondaryOutputType); @@ -227,7 +225,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kPlus: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -237,7 +235,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kModulate: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kISCModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -247,7 +245,7 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kScreen: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -275,7 +273,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, analysis); switch (xfermode) { case SkBlendMode::kClear: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -285,7 +283,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrc: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType); @@ -295,7 +293,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDst: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag | kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); @@ -306,7 +304,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOver: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -316,7 +314,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOver: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -326,7 +324,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType); @@ -336,7 +334,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kISAModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -346,7 +344,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOut: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType); @@ -356,7 +354,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOut: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -366,7 +364,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -376,7 +374,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kISAModulate_OutputType == xpi.fSecondaryOutputType); @@ -386,7 +384,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kXor: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -396,7 +394,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kPlus: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -406,7 +404,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kModulate: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kISCModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -416,7 +414,7 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kScreen: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -445,7 +443,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, analysis); switch (xfermode) { case SkBlendMode::kClear: - TEST_ASSERT(xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(!xpi.fReadsDst); TEST_ASSERT(kIgnoreColor_OptFlag == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -455,7 +453,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrc: - TEST_ASSERT(xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(!xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -465,7 +463,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDst: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag | kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); @@ -476,7 +474,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOver: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -486,7 +484,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOver: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -496,7 +494,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -506,7 +504,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -516,7 +514,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOut: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -526,7 +524,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOut: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -536,7 +534,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -546,7 +544,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -556,7 +554,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kXor: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -566,7 +564,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kPlus: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -576,7 +574,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kModulate: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -586,7 +584,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kScreen: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -616,7 +614,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, analysis); switch (xfermode) { case SkBlendMode::kClear: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -626,7 +624,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrc: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -636,7 +634,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDst: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag | kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); @@ -647,7 +645,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOver: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -657,7 +655,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOver: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -667,7 +665,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -677,7 +675,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag | kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); @@ -688,7 +686,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOut: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -698,7 +696,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOut: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -708,7 +706,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -718,7 +716,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -728,7 +726,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kXor: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -738,7 +736,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kPlus: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -748,7 +746,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kModulate: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags); TEST_ASSERT(kISCModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -758,7 +756,7 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kScreen: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -788,7 +786,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr switch (xfermode) { case SkBlendMode::kClear: - TEST_ASSERT(xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(!xpi.fReadsDst); TEST_ASSERT(kIgnoreColor_OptFlag == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -798,7 +796,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrc: - TEST_ASSERT(xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(!xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -808,7 +806,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDst: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag | kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); @@ -819,7 +817,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOver: - TEST_ASSERT(xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(!xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -829,7 +827,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOver: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -839,7 +837,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -849,7 +847,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstIn: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT((kIgnoreColor_OptFlag | kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); @@ -860,7 +858,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcOut: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -870,7 +868,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstOut: - TEST_ASSERT(xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(!xpi.fReadsDst); TEST_ASSERT(kIgnoreColor_OptFlag == xpi.fOptFlags); TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -880,7 +878,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kSrcATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -890,7 +888,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kDstATop: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -900,7 +898,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kXor: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -910,7 +908,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kPlus: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -920,7 +918,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kModulate: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -930,7 +928,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr TEST_ASSERT(xpi.fBlendInfo.fWriteColor); break; case SkBlendMode::kScreen: - TEST_ASSERT(!xpi.fCanCombineOverlappedStencilAndCover); + TEST_ASSERT(xpi.fReadsDst); TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags); TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); @@ -963,14 +961,15 @@ static void test_lcd_coverage_fallback_case(skiatest::Reporter* reporter, const } void applyPipelineOptimizations(const GrPipelineOptimizations&) override {} - bool onCombineIfPossible(GrOp*, const GrCaps&) override { return false; } + bool onCombineIfPossible(GrOp*, const GrCaps&) override { return false; } void onPrepareDraws(Target*) const override {} typedef GrMeshDrawOp INHERITED; } testLCDCoverageOp; GrProcessorSet::FragmentProcessorAnalysis analysis; - testLCDCoverageOp.analyzeProcessors(&analysis, GrProcessorSet(GrPaint()), nullptr, caps); + GrAppliedClip clip; + testLCDCoverageOp.analyzeProcessors(&analysis, GrProcessorSet(GrPaint()), &clip, caps); SkASSERT(analysis.hasKnownOutputColor()); SkASSERT(analysis.hasLCDCoverage()); @@ -984,6 +983,8 @@ static void test_lcd_coverage_fallback_case(skiatest::Reporter* reporter, const return; } + TEST_ASSERT(GrXPFactory::WillReadDst(xpf, analysis)); + xp->getOptimizations(analysis); GrXferProcessor::BlendInfo blendInfo; |