Remove component flags from GrPipelineInput.
authorBrian Salomon <bsalomon@google.com>
Tue, 14 Feb 2017 16:33:01 +0000 (11:33 -0500)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Tue, 14 Feb 2017 16:34:59 +0000 (16:34 +0000)
We don't use these anywhere downstream except to check for opaqueness.

Change-Id: I897137135d69004ed45c0f4c1e7297183f49fc6d
Reviewed-on: https://skia-review.googlesource.com/8402
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
31 files changed:
src/gpu/GrFragmentProcessor.cpp
src/gpu/GrPaint.cpp
src/gpu/GrPipelineInput.h
src/gpu/GrProcOptInfo.h
src/gpu/instanced/InstancedRendering.cpp
src/gpu/ops/GrAAConvexPathRenderer.cpp
src/gpu/ops/GrAADistanceFieldPathRenderer.cpp
src/gpu/ops/GrAAFillRectOp.cpp
src/gpu/ops/GrAAHairLinePathRenderer.cpp
src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
src/gpu/ops/GrAAStrokeRectOp.cpp
src/gpu/ops/GrAnalyticRectOp.cpp
src/gpu/ops/GrAtlasTextOp.cpp
src/gpu/ops/GrDashOp.cpp
src/gpu/ops/GrDefaultPathRenderer.cpp
src/gpu/ops/GrDrawAtlasOp.h
src/gpu/ops/GrDrawPathOp.h
src/gpu/ops/GrDrawVerticesOp.cpp
src/gpu/ops/GrLatticeOp.cpp
src/gpu/ops/GrMSAAPathRenderer.cpp
src/gpu/ops/GrNonAAFillRectOp.cpp
src/gpu/ops/GrNonAAFillRectPerspectiveOp.cpp
src/gpu/ops/GrNonAAStrokeRectOp.cpp
src/gpu/ops/GrOvalOpFactory.cpp
src/gpu/ops/GrPLSPathRenderer.cpp
src/gpu/ops/GrRegionOp.cpp
src/gpu/ops/GrShadowRRectOp.cpp
src/gpu/ops/GrTessellatingPathRenderer.cpp
src/gpu/ops/GrTestMeshDrawOp.h
tests/GrPorterDuffTest.cpp
tests/PrimitiveProcessorTest.cpp

index 9ff426f..30b3061 100644 (file)
@@ -351,7 +351,7 @@ sk_sp<GrFragmentProcessor> GrFragmentProcessor::RunInSeries(sk_sp<GrFragmentProc
         return series[0];
     }
     // Run the through the series, do the invariant output processing, and look for eliminations.
-    GrProcOptInfo info(0x0, kNone_GrColorComponentFlags);
+    GrProcOptInfo info;
     info.analyzeProcessors(sk_sp_address_as_pointer_address(series), cnt);
     SkTArray<sk_sp<GrFragmentProcessor>> replacementSeries;
     GrColor4f knownColor;
index 26dbf3d..d17b9ab 100644 (file)
@@ -76,7 +76,7 @@ void GrPaint::addCoverageTextureProcessor(GrContext* ctx, sk_sp<GrTextureProxy>
 }
 
 bool GrPaint::internalIsConstantBlendedColor(GrColor paintColor, GrColor* color) const {
-    GrProcOptInfo colorProcInfo(paintColor, kRGBA_GrColorComponentFlags);
+    GrProcOptInfo colorProcInfo((GrPipelineInput(paintColor)));
     colorProcInfo.analyzeProcessors(
             sk_sp_address_as_pointer_address(fColorFragmentProcessors.begin()),
             this->numColorFragmentProcessors());
index 43d88d0..17ec5f6 100644 (file)
  * of a GrPipeline. This is also the GrPrimitiveProcessor color or coverage *output*.
  */
 struct GrPipelineInput {
-    GrPipelineInput()
-            : fValidFlags(kNone_GrColorComponentFlags), fColor(0), fIsLCDCoverage(false) {}
+    enum class Opaque {
+        kNo,
+        kYes,
+    };
 
-    void setKnownFourComponents(GrColor color) {
+    explicit GrPipelineInput(Opaque opaque = Opaque::kNo)
+            : fFlags(opaque == Opaque::kYes ? kIsOpaque_Flag : 0) {}
+
+    explicit GrPipelineInput(GrColor color) : fFlags(kColorIsKnown_Flag), fColor(color) {}
+
+    void setToConstant(GrColor color) {
         fColor = color;
-        fValidFlags = kRGBA_GrColorComponentFlags;
+        if (GrColorIsOpaque(color)) {
+            fFlags = kColorIsKnown_Flag | kIsOpaque_Flag;
+        } else {
+            fFlags = kColorIsKnown_Flag;
+        }
     }
 
-    void setUnknownFourComponents() { fValidFlags = kNone_GrColorComponentFlags; }
+    void setToUnknown() { fFlags = 0; }
+
+    void setToUnknownOpaque() { fFlags = kIsOpaque_Flag; }
 
-    void setUnknownOpaqueFourComponents() {
-        fColor = 0xffU << GrColor_SHIFT_A;
-        fValidFlags = kA_GrColorComponentFlag;
+    void setToSolidCoverage() {
+        fColor = GrColor_WHITE;
+        fFlags = kColorIsKnown_Flag | kColorIsKnown_Flag;
     }
 
-    void setKnownSingleComponent(uint8_t alpha) {
-        fColor = GrColorPackRGBA(alpha, alpha, alpha, alpha);
-        fValidFlags = kRGBA_GrColorComponentFlags;
+    void setToScalar(uint8_t alpha) {
+        this->setToConstant(GrColorPackRGBA(alpha, alpha, alpha, alpha));
     }
 
-    void setUnknownSingleComponent() { fValidFlags = kNone_GrColorComponentFlags; }
+    void setToLCDCoverage() { fFlags = kIsLCDCoverage_Flag; }
 
-    void setUsingLCDCoverage() { fIsLCDCoverage = true; }
+    bool isLCDCoverage() const { return SkToBool(kIsLCDCoverage_Flag & fFlags); }
+
+    bool isOpaque() const { return SkToBool(kIsOpaque_Flag & fFlags); }
+
+    bool isConstant(GrColor* color) const {
+        if (kColorIsKnown_Flag & fFlags) {
+            *color = fColor;
+            return true;
+        }
+        return false;
+    }
 
-    GrColorComponentFlags fValidFlags;
+private:
+    enum Flags {
+        kColorIsKnown_Flag = 0x1,
+        kIsOpaque_Flag = 0x2,
+        kIsLCDCoverage_Flag = 0x4,
+    };
+    uint32_t fFlags;
     GrColor fColor;
-    bool fIsLCDCoverage;
 };
 
 #endif
index 89b4d2c..2c55233 100644 (file)
@@ -22,23 +22,24 @@ class GrPrimitiveProcessor;
  */
 class GrProcOptInfo {
 public:
-    GrProcOptInfo() { this->reset(0, kNone_GrColorComponentFlags); }
+    GrProcOptInfo() = default;
 
-    GrProcOptInfo(GrColor color, GrColorComponentFlags colorFlags) {
-        this->reset(color, colorFlags);
-    }
-
-    void resetToLCDCoverage(GrColor color, GrColorComponentFlags colorFlags) {
-        this->internalReset(color, colorFlags, true);
+    GrProcOptInfo(const GrPipelineInput& input) : GrProcOptInfo() {
+        fIsLCDCoverage = input.isLCDCoverage();
+        fIsOpaque = input.isOpaque();
+        GrColor color;
+        if (input.isConstant(&color)) {
+            fLastKnownOutputColor = GrColor4f::FromGrColor(color);
+            fProcessorsVisitedWithKnownOutput = 0;
+        }
     }
 
-    void reset(GrColor color, GrColorComponentFlags colorFlags) {
-        this->internalReset(color, colorFlags, false);
+    void resetToLCDCoverage() {
+        *this = GrProcOptInfo();
+        fIsLCDCoverage = true;
     }
 
-    void reset(const GrPipelineInput& input) {
-        this->internalReset(input.fColor, input.fValidFlags, input.fIsLCDCoverage);
-    }
+    void reset(const GrPipelineInput& input) { *this = GrProcOptInfo(input); }
 
     /**
      * Runs through a series of processors and updates calculated values. This can be called
@@ -85,25 +86,12 @@ public:
     }
 
 private:
-    void internalReset(GrColor color, GrColorComponentFlags colorFlags, bool isLCDCoverage) {
-        fTotalProcessorsVisited = 0;
-        fIsLCDCoverage = isLCDCoverage;
-        fIsOpaque = (kA_GrColorComponentFlag & colorFlags) && GrColorIsOpaque(color);
-        fAllProcessorsModulatePremul = true;
-        if (kRGBA_GrColorComponentFlags == colorFlags) {
-            fProcessorsVisitedWithKnownOutput = 0;
-            fLastKnownOutputColor = GrColor4f::FromGrColor(color);
-        } else {
-            // -1 so that we know that even without adding processors that the color is not known.
-            fProcessorsVisitedWithKnownOutput = -1;
-        }
-    }
-
-    int fTotalProcessorsVisited;
-    int fProcessorsVisitedWithKnownOutput;
-    bool fIsLCDCoverage;
-    bool fIsOpaque;
-    bool fAllProcessorsModulatePremul;
+    int fTotalProcessorsVisited = 0;
+    // negative one means even the color is unknown before adding the first processor.
+    int fProcessorsVisitedWithKnownOutput = -1;
+    bool fIsLCDCoverage = false;
+    bool fIsOpaque = false;
+    bool fAllProcessorsModulatePremul = true;
     GrColor4f fLastKnownOutputColor;
 };
 
index 52a48cb..66d454e 100644 (file)
@@ -341,14 +341,14 @@ void InstancedRendering::Op::appendParamsTexel(SkScalar x, SkScalar y, SkScalar
 }
 
 void InstancedRendering::Op::getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const {
-    input->pipelineColorInput()->setKnownFourComponents(this->getSingleInstance().fColor);
+    input->pipelineColorInput()->setToConstant(this->getSingleInstance().fColor);
 
     if (AntialiasMode::kCoverage == fInfo.fAntialiasMode ||
         (AntialiasMode::kNone == fInfo.fAntialiasMode &&
          !fInfo.isSimpleRects() && fInfo.fCannotDiscard)) {
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineCoverageInput()->setToUnknown();
     } else {
-        input->pipelineCoverageInput()->setKnownSingleComponent(255);
+        input->pipelineCoverageInput()->setToSolidCoverage();
     }
 }
 
index 5d09706..d13dd6a 100644 (file)
@@ -748,8 +748,8 @@ private:
     }
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index f817f86..a72f7dc 100644 (file)
@@ -169,8 +169,8 @@ private:
     }
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fShapes[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fShapes[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index 13aaae4..2d47ec0 100644 (file)
@@ -204,8 +204,8 @@ public:
 
 private:
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(this->first()->color());
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(this->first()->color());
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void onPrepareDraws(Target* target) const override {
index 09f6c04..820cf3d 100644 (file)
@@ -717,8 +717,8 @@ private:
     }
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index 0cf08d7..af19325 100644 (file)
@@ -173,8 +173,8 @@ private:
     }
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fPaths[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fPaths[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index 25f5071..2b18fe8 100644 (file)
@@ -167,8 +167,8 @@ private:
     AAStrokeRectOp() : INHERITED(ClassID()) {}
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fRects[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fRects[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
     void applyPipelineOptimizations(const GrPipelineOptimizations&) override;
     void onPrepareDraws(Target*) const override;
index 23a024b..ca19f9a 100644 (file)
@@ -270,8 +270,8 @@ public:
 
 private:
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fGeoData[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fGeoData[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index dd17ad6..6b498af 100644 (file)
@@ -47,22 +47,21 @@ SkString GrAtlasTextOp::dumpInfo() const {
 
 void GrAtlasTextOp::getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const {
     if (kColorBitmapMask_MaskType == fMaskType) {
-        input->pipelineColorInput()->setUnknownFourComponents();
+        input->pipelineColorInput()->setToUnknown();
     } else {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
+        input->pipelineColorInput()->setToConstant(fColor);
     }
     switch (fMaskType) {
         case kGrayscaleDistanceField_MaskType:
         case kGrayscaleCoverageMask_MaskType:
-            input->pipelineCoverageInput()->setUnknownSingleComponent();
+            input->pipelineCoverageInput()->setToUnknown();
             break;
         case kLCDCoverageMask_MaskType:
         case kLCDDistanceField_MaskType:
-            input->pipelineCoverageInput()->setUnknownOpaqueFourComponents();
-            input->pipelineCoverageInput()->setUsingLCDCoverage();
+            input->pipelineCoverageInput()->setToLCDCoverage();
             break;
         case kColorBitmapMask_MaskType:
-            input->pipelineCoverageInput()->setKnownSingleComponent(0xff);
+            input->pipelineCoverageInput()->setToSolidCoverage();
     }
 }
 
index dbd319a..6efdfb7 100644 (file)
@@ -297,8 +297,8 @@ private:
     }
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index b4d3812..12513bd 100644 (file)
@@ -133,8 +133,8 @@ private:
     }
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
-        input->pipelineCoverageInput()->setKnownSingleComponent(this->coverage());
+        input->pipelineColorInput()->setToConstant(fColor);
+        input->pipelineCoverageInput()->setToScalar(this->coverage());
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index 8184ecb..90fe07f 100644 (file)
@@ -41,11 +41,11 @@ private:
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
         if (this->hasColors()) {
-            input->pipelineColorInput()->setUnknownFourComponents();
+            input->pipelineColorInput()->setToUnknown();
         } else {
-            input->pipelineColorInput()->setKnownFourComponents(fGeoData[0].fColor);
+            input->pipelineColorInput()->setToConstant(fGeoData[0].fColor);
         }
-        input->pipelineCoverageInput()->setKnownSingleComponent(0xff);
+        input->pipelineCoverageInput()->setToSolidCoverage();
     }
 
     void onPrepareDraws(Target*) const override;
index e82ff22..4c213a2 100644 (file)
@@ -37,8 +37,8 @@ protected:
 
 private:
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
-        input->pipelineCoverageInput()->setKnownSingleComponent(0xFF);
+        input->pipelineColorInput()->setToConstant(fColor);
+        input->pipelineCoverageInput()->setToSolidCoverage();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index 4c41bbf..3eca0c5 100644 (file)
@@ -107,11 +107,11 @@ GrDrawVerticesOp::GrDrawVerticesOp(sk_sp<SkVertices> vertices, GrPrimitiveType p
 
 void GrDrawVerticesOp::getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const {
     if (this->requiresPerVertexColors()) {
-        input->pipelineColorInput()->setUnknownFourComponents();
+        input->pipelineColorInput()->setToUnknown();
     } else {
-        input->pipelineColorInput()->setKnownFourComponents(fMeshes[0].fColor);
+        input->pipelineColorInput()->setToConstant(fMeshes[0].fColor);
     }
-    input->pipelineCoverageInput()->setKnownSingleComponent(0xff);
+    input->pipelineCoverageInput()->setToSolidCoverage();
 }
 
 void GrDrawVerticesOp::applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) {
index 319e505..8e7049c 100644 (file)
@@ -62,8 +62,8 @@ public:
 
 private:
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setUnknownFourComponents();
-        input->pipelineCoverageInput()->setKnownSingleComponent(0xff);
+        input->pipelineColorInput()->setToUnknown();
+        input->pipelineCoverageInput()->setToSolidCoverage();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& analysioptimizations) override {
index 62dc49b..e8fb498 100644 (file)
@@ -260,8 +260,8 @@ private:
     }
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fPaths[0].fColor);
-        input->pipelineCoverageInput()->setKnownSingleComponent(0xff);
+        input->pipelineColorInput()->setToConstant(fPaths[0].fColor);
+        input->pipelineCoverageInput()->setToSolidCoverage();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index 5688c9b..9fa6342 100644 (file)
@@ -111,8 +111,8 @@ private:
     NonAAFillRectOp() : INHERITED(ClassID()) {}
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fRects[0].fColor);
-        input->pipelineCoverageInput()->setKnownSingleComponent(0xff);
+        input->pipelineColorInput()->setToConstant(fRects[0].fColor);
+        input->pipelineCoverageInput()->setToSolidCoverage();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index cf657f0..f4d5bcb 100644 (file)
@@ -131,8 +131,8 @@ private:
     NonAAFillRectPerspectiveOp() : INHERITED(ClassID()) {}
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fRects[0].fColor);
-        input->pipelineCoverageInput()->setKnownSingleComponent(0xff);
+        input->pipelineColorInput()->setToConstant(fRects[0].fColor);
+        input->pipelineCoverageInput()->setToSolidCoverage();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index 53b359e..2743ffc 100644 (file)
@@ -103,8 +103,8 @@ private:
     NonAAStrokeRectOp() : INHERITED(ClassID()) {}
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
-        input->pipelineCoverageInput()->setKnownSingleComponent(0xFF);
+        input->pipelineColorInput()->setToConstant(fColor);
+        input->pipelineCoverageInput()->setToSolidCoverage();
     }
 
     void onPrepareDraws(Target* target) const override {
index a8f0c92..72991c0 100644 (file)
@@ -806,8 +806,8 @@ private:
     CircleOp() : INHERITED(ClassID()) {}
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fGeoData[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fGeoData[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
@@ -1257,8 +1257,8 @@ private:
     EllipseOp() : INHERITED(ClassID()) {}
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fGeoData[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fGeoData[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
@@ -1471,8 +1471,8 @@ private:
     DIEllipseOp() : INHERITED(ClassID()) {}
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fGeoData[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fGeoData[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
@@ -1786,8 +1786,8 @@ public:
 
 private:
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fGeoData[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fGeoData[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
@@ -2148,8 +2148,8 @@ private:
     EllipticalRRectOp() : INHERITED(ClassID()) {}
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fGeoData[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fGeoData[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index 3df31fb..e6022d3 100644 (file)
@@ -782,8 +782,8 @@ private:
     }
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fColor);
+        input->pipelineCoverageInput()->setToUnknown();
         input->setUsesPLSDstRead();
     }
 
index fae79d0..c5d5633 100644 (file)
@@ -78,8 +78,8 @@ public:
 
 private:
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fRegions[0].fColor);
-        input->pipelineCoverageInput()->setKnownSingleComponent(0xff);
+        input->pipelineColorInput()->setToConstant(fRegions[0].fColor);
+        input->pipelineCoverageInput()->setToSolidCoverage();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index e0eadd8..0431622 100644 (file)
@@ -150,8 +150,8 @@ private:
     ShadowCircleOp() : INHERITED(ClassID()) {}
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fCircles[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fCircles[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
@@ -584,8 +584,8 @@ public:
 
 private:
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fGeoData[0].fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fGeoData[0].fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index dd0d3a0..6ebffca 100644 (file)
@@ -181,8 +181,8 @@ public:
 
 private:
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index b8143a5..99eee39 100644 (file)
@@ -34,8 +34,8 @@ protected:
 
 private:
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setKnownFourComponents(fColor);
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToConstant(fColor);
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
index 133d2b7..693481a 100644 (file)
@@ -97,9 +97,8 @@ public:
 
 static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
     GrPipelineAnalysis analysis;
-    analysis.fColorPOI.reset(0, kNone_GrColorComponentFlags);
     // Setting the last argument to true will force covPOI to LCD coverage.
-    analysis.fCoveragePOI.resetToLCDCoverage(0, kNone_GrColorComponentFlags);
+    analysis.fCoveragePOI.resetToLCDCoverage();
 
     SkASSERT(!analysis.fColorPOI.isOpaque());
     SkASSERT(!analysis.fColorPOI.isSolidWhite());
@@ -286,8 +285,6 @@ 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;
-    analysis.fColorPOI.reset(0, kNone_GrColorComponentFlags);
-    analysis.fCoveragePOI.reset(0, kNone_GrColorComponentFlags);
 
     SkASSERT(!analysis.fColorPOI.isOpaque());
     SkASSERT(!analysis.fColorPOI.isSolidWhite());
@@ -475,8 +472,8 @@ 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(GrColorPackRGBA(229, 0, 154, 240), kRGBA_GrColorComponentFlags);
-    analysis.fCoveragePOI.reset(GrColorPackA4(255), kRGBA_GrColorComponentFlags);
+    analysis.fColorPOI.reset(GrPipelineInput(GrColorPackRGBA(229, 0, 154, 240)));
+    analysis.fCoveragePOI.reset(GrPipelineInput(GrColorPackA4(255)));
 
     SkASSERT(!analysis.fColorPOI.isOpaque());
     SkASSERT(!analysis.fColorPOI.isSolidWhite());
@@ -668,8 +665,7 @@ 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(GrColorPackA4(255), kA_GrColorComponentFlag);
-    analysis.fCoveragePOI.reset(0, kNone_GrColorComponentFlags);
+    analysis.fColorPOI.reset(GrPipelineInput(GrPipelineInput::Opaque::kYes));
 
     SkASSERT(analysis.fColorPOI.isOpaque());
     SkASSERT(!analysis.fColorPOI.isSolidWhite());
@@ -860,9 +856,8 @@ 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(GrColorPackRGBA(0, 82, 0, 255),
-                             kG_GrColorComponentFlag | kA_GrColorComponentFlag);
-    analysis.fCoveragePOI.reset(GrColorPackA4(255), kRGBA_GrColorComponentFlags);
+    analysis.fColorPOI.reset(GrPipelineInput(GrPipelineInput::Opaque::kYes));
+    analysis.fCoveragePOI.reset(GrPipelineInput(GrColorPackA4(255)));
 
     SkASSERT(analysis.fColorPOI.isOpaque());
     SkASSERT(!analysis.fColorPOI.isSolidWhite());
@@ -888,7 +883,6 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
                 break;
             case SkBlendMode::kSrc:
                 TEST_ASSERT(!xpi.fReadsDst);
-                // We don't really track per-component blended output anymore.
                 TEST_ASSERT(!xpi.fHasConstantPreCoverageBlendedColor);
                 TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
                 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
@@ -1065,9 +1059,8 @@ static void test_lcd_coverage_fallback_case(skiatest::Reporter* reporter, const
 
     private:
         void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-            input->pipelineColorInput()->setKnownFourComponents(GrColorPackRGBA(123, 45, 67, 221));
-            input->pipelineCoverageInput()->setUnknownFourComponents();
-            input->pipelineCoverageInput()->setUsingLCDCoverage();
+            input->pipelineColorInput()->setToConstant(GrColorPackRGBA(123, 45, 67, 221));
+            input->pipelineCoverageInput()->setToLCDCoverage();
         }
 
         void applyPipelineOptimizations(const GrPipelineOptimizations&) override {}
@@ -1135,26 +1128,17 @@ DEF_GPUTEST(PorterDuffNoDualSourceBlending, reporter, /*factory*/) {
     fakeDstTexture.setTexture(
         ctx->textureProvider()->wrapBackendTexture(fakeDesc, kBorrow_GrWrapOwnership));
 
-    static const GrColor testColors[] = {
-        0,
-        GrColorPackRGBA(0, 82, 0, 255),
-        GrColorPackA4(255)
-    };
-    static const GrColorComponentFlags testColorFlags[] = {
-        kNone_GrColorComponentFlags,
-        kG_GrColorComponentFlag | kA_GrColorComponentFlag,
-        kRGBA_GrColorComponentFlags
-    };
-    GR_STATIC_ASSERT(SK_ARRAY_COUNT(testColors) == SK_ARRAY_COUNT(testColorFlags));
+    static const GrPipelineInput colorInputs[] = {GrPipelineInput(),
+                                                  GrPipelineInput(GrPipelineInput::Opaque::kYes),
+                                                  GrPipelineInput(GrColorPackRGBA(0, 82, 17, 100)),
+                                                  GrPipelineInput(GrColorPackRGBA(0, 82, 17, 255))};
 
-    for (size_t c = 0; c < SK_ARRAY_COUNT(testColors); c++) {
+    for (const auto& colorInput : colorInputs) {
         GrPipelineAnalysis analysis;
-        analysis.fColorPOI.reset(testColors[c], testColorFlags[c]);
-        for (int f = 0; f <= 1; f++) {
-            if (!f) {
-                analysis.fCoveragePOI.reset(0, kNone_GrColorComponentFlags);
-            } else {
-                analysis.fCoveragePOI.reset(GrColorPackA4(255), kRGBA_GrColorComponentFlags);
+        analysis.fColorPOI = colorInput;
+        for (bool fractionalCoverage : {true, false}) {
+            if (!fractionalCoverage) {
+                analysis.fCoveragePOI.reset(GrPipelineInput(GrColorPackA4(255)));
             }
             for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
                 SkBlendMode xfermode = static_cast<SkBlendMode>(m);
index a0b3a35..0b9c368 100644 (file)
@@ -41,8 +41,8 @@ private:
     }
 
     void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
-        input->pipelineColorInput()->setUnknownFourComponents();
-        input->pipelineCoverageInput()->setUnknownSingleComponent();
+        input->pipelineColorInput()->setToUnknown();
+        input->pipelineCoverageInput()->setToUnknown();
     }
 
     void applyPipelineOptimizations(const GrPipelineOptimizations&) override {}