Remove canApplyCoverage from XP and all related functions in gpu code.
authoregdaniel <egdaniel@google.com>
Mon, 23 Feb 2015 20:12:54 +0000 (12:12 -0800)
committerCommit bot <commit-bot@chromium.org>
Mon, 23 Feb 2015 20:12:54 +0000 (12:12 -0800)
BUG=skia:

Review URL: https://codereview.chromium.org/919683002

include/gpu/GrXferProcessor.h
include/gpu/effects/GrCoverageSetOpXP.h
include/gpu/effects/GrPorterDuffXferProcessor.h
src/effects/SkArithmeticMode_gpu.h
src/gpu/GrContext.cpp
src/gpu/GrOvalRenderer.cpp
src/gpu/GrPipelineBuilder.cpp
src/gpu/GrPipelineBuilder.h
src/gpu/effects/GrCustomXfermodePriv.h
src/gpu/effects/GrDisableColorXP.h

index 8cb5cb1..87663b1 100644 (file)
@@ -232,18 +232,6 @@ public:
      */
     virtual bool supportsRGBCoverage(GrColor knownColor, uint32_t knownColorFlags) const = 0;
 
-    /**
-     * Depending on color blend mode requested it may or may not be possible to correctly blend with
-     * fractional pixel coverage generated by the fragment shader.
-     *
-     * This function considers the known color and coverage input into the xfer processor and
-     * certain state information (colorWriteDisabled) to determine whether
-     * coverage can be handled correctly.
-     */
-    virtual bool canApplyCoverage(const GrProcOptInfo& colorPOI,
-                                  const GrProcOptInfo& coveragePOI) const = 0;
-
-
     struct InvariantOutput {
         bool        fWillBlendWithDst;
         GrColor     fBlendedColor;
index a95326f..9435b84 100644 (file)
@@ -28,11 +28,6 @@ public:
         return true;
     }
 
-    bool canApplyCoverage(const GrProcOptInfo& /*colorPOI*/,
-                          const GrProcOptInfo& /*coveragePOI*/) const SK_OVERRIDE {
-        return true;
-    }
-
     bool canTweakAlphaForCoverage() const SK_OVERRIDE { return false; }
 
     void getInvariantOutput(const GrProcOptInfo& colorPOI, const GrProcOptInfo& coveragePOI,
index 2bfcff2..3bcdf0e 100644 (file)
@@ -20,11 +20,6 @@ public:
 
     bool supportsRGBCoverage(GrColor knownColor, uint32_t knownColorFlags) const SK_OVERRIDE;
 
-    bool canApplyCoverage(const GrProcOptInfo& /*colorPOI*/,
-                          const GrProcOptInfo& /*coveragePOI*/) const SK_OVERRIDE {
-        return true;
-    }
-
     bool canTweakAlphaForCoverage() const SK_OVERRIDE;
 
     void getInvariantOutput(const GrProcOptInfo& colorPOI, const GrProcOptInfo& coveragePOI,
index 546902d..8fb58a1 100644 (file)
@@ -81,11 +81,6 @@ public:
         return true;
     }
 
-    bool canApplyCoverage(const GrProcOptInfo& colorPOI,
-                          const GrProcOptInfo& coveragePOI) const SK_OVERRIDE {
-        return true;
-    }
-
     bool canTweakAlphaForCoverage() const SK_OVERRIDE {
         return false;
     }
index 98e78d9..c444b66 100755 (executable)
@@ -460,14 +460,6 @@ static bool apply_aa_to_rect(GrDrawTarget* target,
                              SkScalar strokeWidth,
                              const SkMatrix& combinedMatrix,
                              GrColor color) {
-    if (!pipelineBuilder->canTweakAlphaForCoverage() &&
-        !pipelineBuilder->canUseFracCoveragePrimProc(color, *target->caps())) {
-#ifdef SK_DEBUG
-        //SkDebugf("Turning off AA to correctly apply blend.\n");
-#endif
-        return false;
-    }
-
     if (pipelineBuilder->getRenderTarget()->isMultisampled()) {
         return false;
     }
@@ -869,11 +861,6 @@ static bool is_nested_rects(GrDrawTarget* target,
         return false;
     }
 
-    if (!pipelineBuilder->canTweakAlphaForCoverage() &&
-        !pipelineBuilder->canUseFracCoveragePrimProc(color, *target->caps())) {
-        return false;
-    }
-
     SkPath::Direction dirs[2];
     if (!path.isNestedRects(rects, dirs)) {
         return false;
@@ -1008,8 +995,7 @@ void GrContext::internalDrawPath(GrDrawTarget* target,
     // aa. If we have some future driver-mojo path AA that can do the right
     // thing WRT to the blend then we'll need some query on the PR.
     bool useCoverageAA = useAA &&
-        !pipelineBuilder->getRenderTarget()->isMultisampled() &&
-        pipelineBuilder->canUseFracCoveragePrimProc(color, *target->caps());
+        !pipelineBuilder->getRenderTarget()->isMultisampled();
 
 
     GrPathRendererChain::DrawType type =
index d7f88fe..14f8fde 100644 (file)
@@ -658,8 +658,7 @@ bool GrOvalRenderer::drawOval(GrDrawTarget* target,
                               const SkStrokeRec& stroke)
 {
     bool useCoverageAA = useAA &&
-        !pipelineBuilder->getRenderTarget()->isMultisampled() &&
-        pipelineBuilder->canUseFracCoveragePrimProc(color, *target->caps());
+        !pipelineBuilder->getRenderTarget()->isMultisampled();
 
     if (!useCoverageAA) {
         return false;
@@ -1555,8 +1554,7 @@ bool GrOvalRenderer::drawDRRect(GrDrawTarget* target,
                                 const SkRRect& origOuter,
                                 const SkRRect& origInner) {
     bool applyAA = useAA &&
-                   !pipelineBuilder->getRenderTarget()->isMultisampled() &&
-                   pipelineBuilder->canUseFracCoveragePrimProc(color, *target->caps());
+                   !pipelineBuilder->getRenderTarget()->isMultisampled();
     GrPipelineBuilder::AutoRestoreEffects are;
     if (!origInner.isEmpty()) {
         SkTCopyOnFirstWrite<SkRRect> inner(origInner);
@@ -2044,8 +2042,7 @@ bool GrOvalRenderer::drawRRect(GrDrawTarget* target,
     }
 
     bool useCoverageAA = useAA &&
-        !pipelineBuilder->getRenderTarget()->isMultisampled() &&
-        pipelineBuilder->canUseFracCoveragePrimProc(color, *target->caps());
+        !pipelineBuilder->getRenderTarget()->isMultisampled();
 
     // only anti-aliased rrects for now
     if (!useCoverageAA) {
index 6885eb0..9117a1f 100644 (file)
@@ -82,23 +82,6 @@ void GrPipelineBuilder::setFromPaint(const GrPaint& paint, GrRenderTarget* rt) {
     fCoverageCache = GrColor_ILLEGAL;
 }
 
-////////////////////////////////////////////////////////////////////////////////
-
-bool GrPipelineBuilder::canUseFracCoveragePrimProc(GrColor color,
-                                                   const GrDrawTargetCaps& caps) const {
-    if (caps.dualSourceBlendingSupport()) {
-        return true;
-    }
-
-    this->calcColorInvariantOutput(color);
-
-    // The coverage isn't actually white, its unknown, but this will produce the same effect
-    // TODO we want to cache the result of this call, but we can probably clean up the interface
-    // so we don't have to pass in a seemingly known coverage
-    this->calcCoverageInvariantOutput(GrColor_WHITE);
-    return this->getXPFactory()->canApplyCoverage(fColorProcInfo, fCoverageProcInfo);
-}
-
 //////////////////////////////////////////////////////////////////////////////s
 
 bool GrPipelineBuilder::willXPNeedDstCopy(const GrDrawTargetCaps& caps,
index ad509e1..904d382 100644 (file)
@@ -49,18 +49,6 @@ public:
     /// @}
 
     /**
-     * Depending on features available in the underlying 3D API and the color blend mode requested
-     * it may or may not be possible to correctly blend with fractional pixel coverage generated by
-     * the fragment shader.
-     *
-     * This function considers the current GrPipelineBuilder and the draw target's capabilities to
-     * determine whether coverage can be handled correctly. This function assumes that the caller
-     * intends to specify fractional pixel coverage via a primitive processor but may not have
-     * specified it yet.
-     */
-    bool canUseFracCoveragePrimProc(GrColor color, const GrDrawTargetCaps& caps) const;
-
-    /**
      * This function returns true if the render target destination pixel values will be read for
      * blending during draw.
      */
index 8672529..85092a9 100644 (file)
@@ -64,11 +64,6 @@ public:
         return true;
     }
 
-    bool canApplyCoverage(const GrProcOptInfo& colorPOI,
-                          const GrProcOptInfo& coveragePOI) const SK_OVERRIDE {
-        return true;
-    }
-
     bool canTweakAlphaForCoverage() const SK_OVERRIDE {
         return false;
     }
index 0067588..fb855ee 100644 (file)
@@ -23,11 +23,6 @@ public:
         return true;
     }
 
-    bool canApplyCoverage(const GrProcOptInfo& colorPOI,
-                          const GrProcOptInfo& coveragePOI) const SK_OVERRIDE {
-        return true;
-    }
-
     bool canTweakAlphaForCoverage() const SK_OVERRIDE { return true; }
 
     void getInvariantOutput(const GrProcOptInfo& colorPOI, const GrProcOptInfo& coveragePOI,