aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/GrPorterDuffTest.cpp
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-02-22 11:52:03 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-22 19:41:30 +0000
commit5298dc8bf30f580f551d130346c007efaf4b2098 (patch)
treeea8df60caf9add5e08f06bdd6615f67307256f23 /tests/GrPorterDuffTest.cpp
parent3661bc997620899695041010a750d11dbe8a972d (diff)
Make GrPipelineAnalysis a nested class of GrProcessorSet.
It is renamed to FragmentProcessorAnalysis since it represents the outputs of the final FPs. It now stores the analysis results that are subsequently needed rather than exposing GrProcOptInfo. GrProcOptInfo is now only used on color FPs (not coverage). Miscellaneous related renamings. Change-Id: I95c518a7a76df6dc294a9fa67c611f8f653247bc Reviewed-on: https://skia-review.googlesource.com/8534 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'tests/GrPorterDuffTest.cpp')
-rw-r--r--tests/GrPorterDuffTest.cpp104
1 files changed, 50 insertions, 54 deletions
diff --git a/tests/GrPorterDuffTest.cpp b/tests/GrPorterDuffTest.cpp
index a193162ada..d87e252141 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"
@@ -66,11 +67,11 @@ class GrPorterDuffTest {
public:
struct XPInfo {
XPInfo(skiatest::Reporter* reporter, SkBlendMode xfermode, const GrCaps& caps,
- const GrPipelineAnalysis& analysis) {
+ const GrProcessorSet::FragmentProcessorAnalysis& analysis) {
const GrXPFactory* xpf = GrPorterDuffXPFactory::Get(xfermode);
- fReadsDst = GrXPFactory::WillReadDst(xpf, analysis.fColorPOI, analysis.fCoveragePOI);
+ fReadsDst = GrXPFactory::WillReadDst(xpf, analysis);
sk_sp<GrXferProcessor> xp(xpf->createXferProcessor(analysis, false, nullptr, caps));
- TEST_ASSERT(!xpf->willNeedDstTexture(caps, analysis));
+ TEST_ASSERT(!GrXPFactory::WillNeedDstTexture(xpf, caps, analysis));
GrColor ignoredOverrideColor;
fOptFlags = xp->getOptimizations(analysis, false, &ignoredOverrideColor, caps);
GetXPOutputTypes(xp.get(), &fPrimaryOutputType, &fSecondaryOutputType);
@@ -92,14 +93,13 @@ public:
};
static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
- GrPipelineAnalysis analysis;
- // Setting the last argument to true will force covPOI to LCD coverage.
- analysis.fCoveragePOI.resetToLCDCoverage();
+ GrPipelineInput lcdInput;
+ lcdInput.setToLCDCoverage();
+ GrProcessorSet::FragmentProcessorAnalysis analysis(GrPipelineInput(), lcdInput, caps);
- SkASSERT(!analysis.fColorPOI.isOpaque());
- SkASSERT(!analysis.fColorPOI.isSolidWhite());
- SkASSERT(!analysis.fCoveragePOI.isSolidWhite());
- SkASSERT(analysis.fCoveragePOI.isLCDCoverage());
+ SkASSERT(!analysis.isOutputColorOpaque());
+ SkASSERT(!analysis.hasKnownOutputColor());
+ SkASSERT(analysis.hasLCDCoverage());
for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
SkBlendMode xfermode = static_cast<SkBlendMode>(m);
@@ -264,12 +264,12 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps)
}
}
static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
- GrPipelineAnalysis analysis;
+ GrProcessorSet::FragmentProcessorAnalysis analysis(GrPipelineInput(), GrPipelineInput(), caps);
- SkASSERT(!analysis.fColorPOI.isOpaque());
- SkASSERT(!analysis.fColorPOI.isSolidWhite());
- SkASSERT(!analysis.fCoveragePOI.isSolidWhite());
- SkASSERT(!analysis.fCoveragePOI.isLCDCoverage());
+ SkASSERT(!analysis.isOutputColorOpaque());
+ SkASSERT(!analysis.hasKnownOutputColor());
+ SkASSERT(!analysis.hasLCDCoverage());
+ SkASSERT(analysis.hasCoverage());
for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
SkBlendMode xfermode = static_cast<SkBlendMode>(m);
@@ -435,14 +435,12 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const
}
static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
- GrPipelineAnalysis analysis;
- analysis.fColorPOI.reset(GrPipelineInput(GrColorPackRGBA(229, 0, 154, 240)));
- analysis.fCoveragePOI.reset(GrPipelineInput(GrColorPackA4(255)));
+ GrProcessorSet::FragmentProcessorAnalysis analysis(GrColorPackRGBA(229, 0, 154, 240),
+ GrColorPackA4(255), caps);
- SkASSERT(!analysis.fColorPOI.isOpaque());
- SkASSERT(!analysis.fColorPOI.isSolidWhite());
- SkASSERT(analysis.fCoveragePOI.isSolidWhite());
- SkASSERT(!analysis.fCoveragePOI.isLCDCoverage());
+ SkASSERT(!analysis.isOutputColorOpaque());
+ SkASSERT(analysis.hasKnownOutputColor());
+ SkASSERT(!analysis.hasCoverage());
for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
SkBlendMode xfermode = static_cast<SkBlendMode>(m);
@@ -608,13 +606,13 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
}
static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
- GrPipelineAnalysis analysis;
- analysis.fColorPOI.reset(GrPipelineInput(GrPipelineInput::Opaque::kYes));
+ GrProcessorSet::FragmentProcessorAnalysis analysis(GrPipelineInput::Opaque::kYes,
+ GrPipelineInput(), caps);
- SkASSERT(analysis.fColorPOI.isOpaque());
- SkASSERT(!analysis.fColorPOI.isSolidWhite());
- SkASSERT(!analysis.fCoveragePOI.isSolidWhite());
- SkASSERT(!analysis.fCoveragePOI.isLCDCoverage());
+ SkASSERT(analysis.isOutputColorOpaque());
+ SkASSERT(!analysis.hasKnownOutputColor());
+ SkASSERT(analysis.hasCoverage());
+ SkASSERT(!analysis.hasLCDCoverage());
for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
SkBlendMode xfermode = static_cast<SkBlendMode>(m);
@@ -782,14 +780,12 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const
}
static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
- GrPipelineAnalysis analysis;
- analysis.fColorPOI.reset(GrPipelineInput(GrPipelineInput::Opaque::kYes));
- analysis.fCoveragePOI.reset(GrPipelineInput(GrColorPackA4(255)));
+ GrProcessorSet::FragmentProcessorAnalysis analysis(GrPipelineInput::Opaque::kYes,
+ GrColorPackA4(255), caps);
- SkASSERT(analysis.fColorPOI.isOpaque());
- SkASSERT(!analysis.fColorPOI.isSolidWhite());
- SkASSERT(analysis.fCoveragePOI.isSolidWhite());
- SkASSERT(!analysis.fCoveragePOI.isLCDCoverage());
+ SkASSERT(analysis.isOutputColorOpaque());
+ SkASSERT(!analysis.hasKnownOutputColor());
+ SkASSERT(!analysis.hasCoverage());
for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
SkBlendMode xfermode = static_cast<SkBlendMode>(m);
@@ -967,9 +963,10 @@ static void test_lcd_coverage_fallback_case(skiatest::Reporter* reporter, const
const char* name() const override { return "Test LCD Text Op"; }
private:
- void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
- input->pipelineColorInput()->setToConstant(GrColorPackRGBA(123, 45, 67, 221));
- input->pipelineCoverageInput()->setToLCDCoverage();
+ void getFragmentProcessorAnalysisInputs(
+ FragmentProcessorAnalysisInputs* input) const override {
+ input->colorInput()->setToConstant(GrColorPackRGBA(123, 45, 67, 221));
+ input->coverageInput()->setToLCDCoverage();
}
void applyPipelineOptimizations(const GrPipelineOptimizations&) override {}
@@ -979,19 +976,15 @@ static void test_lcd_coverage_fallback_case(skiatest::Reporter* reporter, const
typedef GrMeshDrawOp INHERITED;
} testLCDCoverageOp;
- GrPipelineAnalysis analysis;
- testLCDCoverageOp.initPipelineAnalysis(&analysis);
- GrProcOptInfo colorPOI = analysis.fColorPOI;
- GrProcOptInfo covPOI = analysis.fCoveragePOI;
- // Prevent unused var warnings in release.
- (void)colorPOI;
- (void)covPOI;
+ GrProcessorSet::FragmentProcessorAnalysis analysis;
+ GrAppliedClip clip(SkRect::MakeLargest());
+ testLCDCoverageOp.analyzeProcessors(&analysis, GrProcessorSet(GrPaint()), clip, caps);
- SkASSERT(colorPOI.hasKnownOutputColor());
- SkASSERT(covPOI.isLCDCoverage());
+ SkASSERT(analysis.hasKnownOutputColor());
+ SkASSERT(analysis.hasLCDCoverage());
const GrXPFactory* xpf = GrPorterDuffXPFactory::Get(SkBlendMode::kSrcOver);
- TEST_ASSERT(!xpf->willNeedDstTexture(caps, analysis));
+ TEST_ASSERT(!GrXPFactory::WillNeedDstTexture(xpf, caps, analysis));
sk_sp<GrXferProcessor> xp(xpf->createXferProcessor(analysis, false, nullptr, caps));
if (!xp) {
@@ -999,7 +992,7 @@ static void test_lcd_coverage_fallback_case(skiatest::Reporter* reporter, const
return;
}
- TEST_ASSERT(GrXPFactory::WillReadDst(xpf, colorPOI, covPOI));
+ TEST_ASSERT(GrXPFactory::WillReadDst(xpf, analysis));
GrColor overrideColor;
xp->getOptimizations(analysis, false, &overrideColor, caps);
@@ -1041,17 +1034,20 @@ DEF_GPUTEST(PorterDuffNoDualSourceBlending, reporter, /*factory*/) {
GrPipelineInput(GrColorPackRGBA(0, 82, 17, 255))};
for (const auto& colorInput : colorInputs) {
- GrPipelineAnalysis analysis;
- analysis.fColorPOI = colorInput;
+ GrProcessorSet::FragmentProcessorAnalysis analysis;
for (bool fractionalCoverage : {true, false}) {
- if (!fractionalCoverage) {
- analysis.fCoveragePOI.reset(GrPipelineInput(GrColorPackA4(255)));
+ if (fractionalCoverage) {
+ analysis = GrProcessorSet::FragmentProcessorAnalysis(colorInput, GrPipelineInput(),
+ caps);
+ } else {
+ analysis = GrProcessorSet::FragmentProcessorAnalysis(colorInput, GrColorPackA4(255),
+ caps);
}
for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
SkBlendMode xfermode = static_cast<SkBlendMode>(m);
const GrXPFactory* xpf = GrPorterDuffXPFactory::Get(xfermode);
GrXferProcessor::DstTexture* dstTexture =
- xpf->willNeedDstTexture(caps, analysis) ? &fakeDstTexture : 0;
+ GrXPFactory::WillNeedDstTexture(xpf, caps, analysis) ? &fakeDstTexture : 0;
sk_sp<GrXferProcessor> xp(
xpf->createXferProcessor(analysis, false, dstTexture, caps));
if (!xp) {