Remove canApplyCoverage from XP and all related functions in gpu code.

BUG=skia:

Review URL: https://codereview.chromium.org/919683002
This commit is contained in:
egdaniel 2015-02-23 12:12:54 -08:00 committed by Commit bot
parent b8de1f4659
commit 0bdeec9640
10 changed files with 4 additions and 87 deletions

View 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;

View 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,

View 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,

View 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;
}

View File

@ -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 =

View 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) {

View 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,

View File

@ -48,18 +48,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.

View 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;
}

View 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,