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:
parent
b8de1f4659
commit
0bdeec9640
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 =
|
||||
|
@ -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) {
|
||||
|
@ -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,
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user