aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gm/convexpolyeffect.cpp6
-rw-r--r--include/gpu/GrXferProcessor.h8
-rw-r--r--src/gpu/GrDefaultGeoProcFactory.cpp77
-rw-r--r--src/gpu/GrDefaultGeoProcFactory.h7
-rw-r--r--src/gpu/GrPathProcessor.cpp5
-rw-r--r--src/gpu/GrPipeline.cpp12
-rw-r--r--src/gpu/GrPipeline.h5
-rw-r--r--src/gpu/GrPrimitiveProcessor.h17
-rw-r--r--src/gpu/GrProgramDesc.cpp2
-rw-r--r--src/gpu/GrProgramDesc.h3
-rw-r--r--src/gpu/GrXferProcessor.cpp8
-rw-r--r--src/gpu/effects/GrCustomXfermode.cpp11
-rw-r--r--src/gpu/effects/GrDisableColorXP.cpp2
-rw-r--r--src/gpu/effects/GrPorterDuffXferProcessor.cpp36
-rw-r--r--src/gpu/glsl/GrGLSLProgramBuilder.cpp6
-rw-r--r--src/gpu/glsl/GrGLSLProgramBuilder.h1
-rw-r--r--src/gpu/instanced/InstanceProcessor.cpp3
-rw-r--r--src/gpu/ops/GrAAConvexPathRenderer.cpp25
-rw-r--r--src/gpu/ops/GrAADistanceFieldPathRenderer.cpp2
-rw-r--r--src/gpu/ops/GrAAFillRectOp.cpp3
-rw-r--r--src/gpu/ops/GrAAHairLinePathRenderer.cpp3
-rw-r--r--src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp25
-rw-r--r--src/gpu/ops/GrAAStrokeRectOp.cpp8
-rw-r--r--src/gpu/ops/GrAtlasTextOp.cpp1
-rw-r--r--src/gpu/ops/GrAtlasTextOp.h1
-rw-r--r--src/gpu/ops/GrDashOp.cpp13
-rw-r--r--src/gpu/ops/GrDefaultPathRenderer.cpp6
-rw-r--r--src/gpu/ops/GrDrawAtlasOp.cpp16
-rw-r--r--src/gpu/ops/GrDrawAtlasOp.h2
-rw-r--r--src/gpu/ops/GrDrawVerticesOp.cpp17
-rw-r--r--src/gpu/ops/GrDrawVerticesOp.h1
-rw-r--r--src/gpu/ops/GrLatticeOp.cpp10
-rw-r--r--src/gpu/ops/GrMSAAPathRenderer.cpp2
-rw-r--r--src/gpu/ops/GrNonAAFillRectOp.cpp11
-rw-r--r--src/gpu/ops/GrNonAAFillRectPerspectiveOp.cpp14
-rw-r--r--src/gpu/ops/GrNonAAStrokeRectOp.cpp11
-rw-r--r--src/gpu/ops/GrOvalOpFactory.cpp2
-rw-r--r--src/gpu/ops/GrRegionOp.cpp11
-rw-r--r--src/gpu/ops/GrTessellatingPathRenderer.cpp18
-rw-r--r--src/gpu/ops/GrTestMeshDrawOp.h2
-rw-r--r--tests/GrPorterDuffTest.cpp76
41 files changed, 156 insertions, 333 deletions
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 2c8e6604f4..db0b02e6b3 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -58,10 +58,8 @@ private:
using namespace GrDefaultGeoProcFactory;
Color color(this->color());
- Coverage coverage(Coverage::kSolid_Type);
- LocalCoords localCoords(LocalCoords::kUnused_Type);
- sk_sp<GrGeometryProcessor> gp(
- GrDefaultGeoProcFactory::Make(color, coverage, localCoords, SkMatrix::I()));
+ sk_sp<GrGeometryProcessor> gp(GrDefaultGeoProcFactory::Make(
+ color, Coverage::kSolid_Type, LocalCoords::kUnused_Type, SkMatrix::I()));
size_t vertexStride = gp->getVertexStride();
SkASSERT(vertexStride == sizeof(SkPoint));
diff --git a/include/gpu/GrXferProcessor.h b/include/gpu/GrXferProcessor.h
index d5fa9e03eb..e97c0b92c7 100644
--- a/include/gpu/GrXferProcessor.h
+++ b/include/gpu/GrXferProcessor.h
@@ -113,17 +113,13 @@ public:
*/
kIgnoreColor_OptFlag = 0x2,
/**
- * GrXferProcessor will ignore coverage, thus no need to provide
- */
- kIgnoreCoverage_OptFlag = 0x4,
- /**
* Clear color stages and override input color to that returned by getOptimizations
*/
- kOverrideColor_OptFlag = 0x8,
+ kOverrideColor_OptFlag = 0x4,
/**
* Can tweak alpha for coverage. Currently this flag should only be used by a GrDrawOp.
*/
- kCanTweakAlphaForCoverage_OptFlag = 0x20,
+ kCanTweakAlphaForCoverage_OptFlag = 0x8,
};
static const OptFlags kNone_OptFlags = (OptFlags)0;
diff --git a/src/gpu/GrDefaultGeoProcFactory.cpp b/src/gpu/GrDefaultGeoProcFactory.cpp
index 406fe6ae39..8970803bb6 100644
--- a/src/gpu/GrDefaultGeoProcFactory.cpp
+++ b/src/gpu/GrDefaultGeoProcFactory.cpp
@@ -35,11 +35,9 @@ public:
const SkMatrix& viewMatrix,
const SkMatrix& localMatrix,
bool localCoordsWillBeRead,
- bool coverageWillBeIgnored,
uint8_t coverage) {
return sk_sp<GrGeometryProcessor>(new DefaultGeoProc(
- gpTypeFlags, color, viewMatrix, localMatrix, coverage,
- localCoordsWillBeRead, coverageWillBeIgnored));
+ gpTypeFlags, color, viewMatrix, localMatrix, coverage, localCoordsWillBeRead));
}
const char* name() const override { return "DefaultGeometryProcessor"; }
@@ -55,7 +53,6 @@ public:
const SkMatrix& localMatrix() const { return fLocalMatrix; }
bool localCoordsWillBeRead() const { return fLocalCoordsWillBeRead; }
uint8_t coverage() const { return fCoverage; }
- bool coverageWillBeIgnored() const { return fCoverageWillBeIgnored; }
bool hasVertexCoverage() const { return SkToBool(fInCoverage); }
class GLSLProcessor : public GrGLSLGeometryProcessor {
@@ -112,22 +109,20 @@ public:
}
// Setup coverage as pass through
- if (!gp.coverageWillBeIgnored()) {
- if (gp.hasVertexCoverage()) {
- fragBuilder->codeAppendf("float alpha = 1.0;");
- varyingHandler->addPassThroughAttribute(gp.inCoverage(), "alpha");
- fragBuilder->codeAppendf("%s = vec4(alpha);", args.fOutputCoverage);
- } else if (gp.coverage() == 0xff) {
- fragBuilder->codeAppendf("%s = vec4(1);", args.fOutputCoverage);
- } else {
- const char* fragCoverage;
- fCoverageUniform = uniformHandler->addUniform(kFragment_GrShaderFlag,
- kFloat_GrSLType,
- kDefault_GrSLPrecision,
- "Coverage",
- &fragCoverage);
- fragBuilder->codeAppendf("%s = vec4(%s);", args.fOutputCoverage, fragCoverage);
- }
+ if (gp.hasVertexCoverage()) {
+ fragBuilder->codeAppendf("float alpha = 1.0;");
+ varyingHandler->addPassThroughAttribute(gp.inCoverage(), "alpha");
+ fragBuilder->codeAppendf("%s = vec4(alpha);", args.fOutputCoverage);
+ } else if (gp.coverage() == 0xff) {
+ fragBuilder->codeAppendf("%s = vec4(1);", args.fOutputCoverage);
+ } else {
+ const char* fragCoverage;
+ fCoverageUniform = uniformHandler->addUniform(kFragment_GrShaderFlag,
+ kFloat_GrSLType,
+ kDefault_GrSLPrecision,
+ "Coverage",
+ &fragCoverage);
+ fragBuilder->codeAppendf("%s = vec4(%s);", args.fOutputCoverage, fragCoverage);
}
}
@@ -137,12 +132,11 @@ public:
const DefaultGeoProc& def = gp.cast<DefaultGeoProc>();
uint32_t key = def.fFlags;
key |= def.colorIgnored() << 8;
- key |= def.coverageWillBeIgnored() << 9;
- key |= def.hasVertexColor() << 10;
- key |= def.hasVertexCoverage() << 11;
- key |= def.coverage() == 0xff ? 0x1 << 12 : 0;
- key |= def.localCoordsWillBeRead() && def.localMatrix().hasPerspective() ? 0x1 << 24 :
- 0x0;
+ key |= def.hasVertexColor() << 9;
+ key |= def.hasVertexCoverage() << 10;
+ key |= (def.coverage() == 0xff) ? (0x1 << 11) : 0;
+ key |= (def.localCoordsWillBeRead() && def.localMatrix().hasPerspective()) ? (0x1 << 24)
+ : 0x0;
key |= ComputePosKey(def.viewMatrix()) << 25;
b->add32(key);
}
@@ -166,8 +160,7 @@ public:
fColor = dgp.color();
}
- if (!dgp.coverageWillBeIgnored() &&
- dgp.coverage() != fCoverage && !dgp.hasVertexCoverage()) {
+ if (dgp.coverage() != fCoverage && !dgp.hasVertexCoverage()) {
pdman.set1f(fCoverageUniform, GrNormalizeByteToFloat(dgp.coverage()));
fCoverage = dgp.coverage();
}
@@ -199,19 +192,17 @@ private:
const SkMatrix& viewMatrix,
const SkMatrix& localMatrix,
uint8_t coverage,
- bool localCoordsWillBeRead,
- bool coverageWillBeIgnored)
- : fInPosition(nullptr)
- , fInColor(nullptr)
- , fInLocalCoords(nullptr)
- , fInCoverage(nullptr)
- , fColor(color)
- , fViewMatrix(viewMatrix)
- , fLocalMatrix(localMatrix)
- , fCoverage(coverage)
- , fFlags(gpTypeFlags)
- , fLocalCoordsWillBeRead(localCoordsWillBeRead)
- , fCoverageWillBeIgnored(coverageWillBeIgnored) {
+ bool localCoordsWillBeRead)
+ : fInPosition(nullptr)
+ , fInColor(nullptr)
+ , fInLocalCoords(nullptr)
+ , fInCoverage(nullptr)
+ , fColor(color)
+ , fViewMatrix(viewMatrix)
+ , fLocalMatrix(localMatrix)
+ , fCoverage(coverage)
+ , fFlags(gpTypeFlags)
+ , fLocalCoordsWillBeRead(localCoordsWillBeRead) {
this->initClassID<DefaultGeoProc>();
bool hasColor = SkToBool(gpTypeFlags & kColor_GPFlag);
bool hasExplicitLocalCoords = SkToBool(gpTypeFlags & kLocalCoord_GPFlag);
@@ -241,7 +232,6 @@ private:
uint8_t fCoverage;
uint32_t fFlags;
bool fLocalCoordsWillBeRead;
- bool fCoverageWillBeIgnored;
GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
@@ -267,7 +257,6 @@ sk_sp<GrGeometryProcessor> DefaultGeoProc::TestCreate(GrProcessorTestData* d) {
GrTest::TestMatrix(d->fRandom),
GrTest::TestMatrix(d->fRandom),
d->fRandom->nextBool(),
- d->fRandom->nextBool(),
GrRandomCoverage(d->fRandom));
}
@@ -281,7 +270,6 @@ sk_sp<GrGeometryProcessor> GrDefaultGeoProcFactory::Make(const Color& color,
flags |= localCoords.fType == LocalCoords::kHasExplicit_Type ? kLocalCoord_GPFlag : 0;
uint8_t inCoverage = coverage.fCoverage;
- bool coverageWillBeIgnored = coverage.fType == Coverage::kNone_Type;
bool localCoordsWillBeRead = localCoords.fType != LocalCoords::kUnused_Type;
GrColor inColor = color.fColor;
@@ -290,7 +278,6 @@ sk_sp<GrGeometryProcessor> GrDefaultGeoProcFactory::Make(const Color& color,
viewMatrix,
localCoords.fMatrix ? *localCoords.fMatrix : SkMatrix::I(),
localCoordsWillBeRead,
- coverageWillBeIgnored,
inCoverage);
}
diff --git a/src/gpu/GrDefaultGeoProcFactory.h b/src/gpu/GrDefaultGeoProcFactory.h
index 688fcc99c7..238c154489 100644
--- a/src/gpu/GrDefaultGeoProcFactory.h
+++ b/src/gpu/GrDefaultGeoProcFactory.h
@@ -66,7 +66,7 @@ namespace GrDefaultGeoProcFactory {
kUniform_Type,
kAttribute_Type,
};
- Color(GrColor color) : fType(kUniform_Type), fColor(color) {}
+ explicit Color(GrColor color) : fType(kUniform_Type), fColor(color) {}
Color(Type type) : fType(type), fColor(GrColor_ILLEGAL) {
SkASSERT(type != kUniform_Type);
@@ -82,12 +82,11 @@ namespace GrDefaultGeoProcFactory {
struct Coverage {
enum Type {
- kNone_Type,
kSolid_Type,
kUniform_Type,
kAttribute_Type,
};
- Coverage(uint8_t coverage) : fType(kUniform_Type), fCoverage(coverage) {}
+ explicit Coverage(uint8_t coverage) : fType(kUniform_Type), fCoverage(coverage) {}
Coverage(Type type) : fType(type), fCoverage(0xff) {
SkASSERT(type != kUniform_Type);
}
@@ -127,8 +126,6 @@ namespace GrDefaultGeoProcFactory {
const Coverage&,
const LocalCoords&,
const SkMatrix& viewMatrix);
-
- inline size_t DefaultVertexStride() { return sizeof(PositionAttr); }
};
#endif
diff --git a/src/gpu/GrPathProcessor.cpp b/src/gpu/GrPathProcessor.cpp
index 5e1089cc05..3d78c62684 100644
--- a/src/gpu/GrPathProcessor.cpp
+++ b/src/gpu/GrPathProcessor.cpp
@@ -21,7 +21,6 @@ public:
const GrShaderCaps&,
GrProcessorKeyBuilder* b) {
b->add32(SkToInt(pathProc.optimizations().readsColor()) |
- (SkToInt(pathProc.optimizations().readsCoverage()) << 1) |
(SkToInt(pathProc.viewMatrix().hasPerspective()) << 2));
}
@@ -48,9 +47,7 @@ public:
}
// setup constant solid coverage
- if (pathProc.optimizations().readsCoverage()) {
- fragBuilder->codeAppendf("%s = vec4(1);", args.fOutputCoverage);
- }
+ fragBuilder->codeAppendf("%s = vec4(1);", args.fOutputCoverage);
}
void emitTransforms(GrGLSLVaryingHandler* varyingHandler,
diff --git a/src/gpu/GrPipeline.cpp b/src/gpu/GrPipeline.cpp
index 2ca8e2c50e..22818299cd 100644
--- a/src/gpu/GrPipeline.cpp
+++ b/src/gpu/GrPipeline.cpp
@@ -146,9 +146,6 @@ GrPipeline* GrPipeline::CreateAt(void* memory, const CreateArgs& args,
optimizations->fFlags |= GrPipelineOptimizations::kUseOverrideColor_Flag;
optimizations->fOverrideColor = overrideColor;
}
- if (!SkToBool(optFlags & GrXferProcessor::kIgnoreCoverage_OptFlag)) {
- optimizations->fFlags |= GrPipelineOptimizations::kReadsCoverage_Flag;
- }
if (usesLocalCoords) {
optimizations->fFlags |= GrPipelineOptimizations::kReadsLocalCoords_Flag;
}
@@ -200,16 +197,10 @@ void GrPipeline::adjustProgramFromOptimizations(const GrPipelineBuilder& pipelin
const GrProcOptInfo& coveragePOI,
int* firstColorProcessorIdx,
int* firstCoverageProcessorIdx) {
- fIgnoresCoverage = SkToBool(flags & GrXferProcessor::kIgnoreCoverage_OptFlag);
-
if ((flags & GrXferProcessor::kIgnoreColor_OptFlag) ||
(flags & GrXferProcessor::kOverrideColor_OptFlag)) {
*firstColorProcessorIdx = pipelineBuilder.numColorFragmentProcessors();
}
-
- if (flags & GrXferProcessor::kIgnoreCoverage_OptFlag) {
- *firstCoverageProcessorIdx = pipelineBuilder.numCoverageFragmentProcessors();
- }
}
////////////////////////////////////////////////////////////////////////////////
@@ -224,8 +215,7 @@ bool GrPipeline::AreEqual(const GrPipeline& a, const GrPipeline& b) {
!a.fWindowRectsState.cheapEqualTo(b.fWindowRectsState) ||
a.fFlags != b.fFlags ||
a.fUserStencilSettings != b.fUserStencilSettings ||
- a.fDrawFace != b.fDrawFace ||
- a.fIgnoresCoverage != b.fIgnoresCoverage) {
+ a.fDrawFace != b.fDrawFace) {
return false;
}
diff --git a/src/gpu/GrPipeline.h b/src/gpu/GrPipeline.h
index e49dad4cf3..3e25fda0e1 100644
--- a/src/gpu/GrPipeline.h
+++ b/src/gpu/GrPipeline.h
@@ -199,10 +199,6 @@ public:
GrDrawFace getDrawFace() const { return fDrawFace; }
- ///////////////////////////////////////////////////////////////////////////
-
- bool ignoresCoverage() const { return fIgnoresCoverage; }
-
private:
GrPipeline() { /** Initialized in factory function*/ }
@@ -246,7 +242,6 @@ private:
uint32_t fFlags;
ProgramXferProcessor fXferProcessor;
FragmentProcessorArray fFragmentProcessors;
- bool fIgnoresCoverage;
// This value is also the index in fFragmentProcessors where coverage processors begin.
int fNumColorProcessors;
diff --git a/src/gpu/GrPrimitiveProcessor.h b/src/gpu/GrPrimitiveProcessor.h
index ed2b2e3a0e..8d6a70284e 100644
--- a/src/gpu/GrPrimitiveProcessor.h
+++ b/src/gpu/GrPrimitiveProcessor.h
@@ -59,10 +59,6 @@ public:
/** Does the pipeline require the GrPrimitiveProcessor's color? */
bool readsColor() const { return SkToBool(kReadsColor_Flag & fFlags); }
- /** Does the pipeline require the GrPrimitiveProcessor's coverage? */
- bool readsCoverage() const { return
- SkToBool(kReadsCoverage_Flag & fFlags); }
-
/** Does the pipeline require access to (implicit or explicit) local coordinates? */
bool readsLocalCoords() const {
return SkToBool(kReadsLocalCoords_Flag & fFlags);
@@ -103,23 +99,20 @@ public:
private:
enum {
// If this is not set the primitive processor need not produce a color output
- kReadsColor_Flag = 0x1,
-
- // If this is not set the primitive processor need not produce a coverage output
- kReadsCoverage_Flag = 0x2,
+ kReadsColor_Flag = 0x1,
// If this is not set the primitive processor need not produce local coordinates
- kReadsLocalCoords_Flag = 0x4,
+ kReadsLocalCoords_Flag = 0x2,
// If this flag is set then the primitive processor may produce color*coverage as
// its color output (and not output a separate coverage).
- kCanTweakAlphaForCoverage_Flag = 0x8,
+ kCanTweakAlphaForCoverage_Flag = 0x4,
// If this flag is set the GrPrimitiveProcessor must produce fOverrideColor as its
// output color. If not set fOverrideColor is to be ignored.
- kUseOverrideColor_Flag = 0x10,
+ kUseOverrideColor_Flag = 0x8,
- kWillColorBlendWithDst_Flag = 0x20,
+ kWillColorBlendWithDst_Flag = 0x10,
};
uint32_t fFlags;
diff --git a/src/gpu/GrProgramDesc.cpp b/src/gpu/GrProgramDesc.cpp
index c6a1bcfc0d..87a4a275d7 100644
--- a/src/gpu/GrProgramDesc.cpp
+++ b/src/gpu/GrProgramDesc.cpp
@@ -214,8 +214,6 @@ bool GrProgramDesc::Build(GrProgramDesc* desc,
header->fOutputSwizzle = shaderCaps.configOutputSwizzle(rt->config()).asKey();
- header->fIgnoresCoverage = pipeline.ignoresCoverage() ? 1 : 0;
-
header->fSnapVerticesToPixelCenters = pipeline.snapVerticesToPixelCenters();
header->fColorFragmentProcessorCnt = pipeline.numColorFragmentProcessors();
header->fCoverageFragmentProcessorCnt = pipeline.numCoverageFragmentProcessors();
diff --git a/src/gpu/GrProgramDesc.h b/src/gpu/GrProgramDesc.h
index 5bb43f958b..2a26f2d1c0 100644
--- a/src/gpu/GrProgramDesc.h
+++ b/src/gpu/GrProgramDesc.h
@@ -103,10 +103,9 @@ public:
uint8_t fCoverageFragmentProcessorCnt : 4;
// Set to uniquely identify the rt's origin, or 0 if the shader does not require this info.
uint8_t fSurfaceOriginKey : 2;
- uint8_t fIgnoresCoverage : 1;
uint8_t fSnapVerticesToPixelCenters : 1;
uint8_t fHasPointSize : 1;
- uint8_t fPad : 3;
+ uint8_t fPad : 4;
};
GR_STATIC_ASSERT(sizeof(KeyHeader) == 4);
diff --git a/src/gpu/GrXferProcessor.cpp b/src/gpu/GrXferProcessor.cpp
index 13533af380..c2a16b89b0 100644
--- a/src/gpu/GrXferProcessor.cpp
+++ b/src/gpu/GrXferProcessor.cpp
@@ -37,14 +37,6 @@ GrXferProcessor::OptFlags GrXferProcessor::getOptimizations(const GrPipelineAnal
const GrCaps& caps) const {
GrXferProcessor::OptFlags flags =
this->onGetOptimizations(analysis, doesStencilWrite, overrideColor, caps);
-
- if (this->willReadDstColor()) {
- // When performing a dst read we handle coverage in the base class.
- SkASSERT(!(flags & GrXferProcessor::kIgnoreCoverage_OptFlag));
- if (analysis.fCoveragePOI.isSolidWhite()) {
- flags |= GrXferProcessor::kIgnoreCoverage_OptFlag;
- }
- }
return flags;
}
diff --git a/src/gpu/effects/GrCustomXfermode.cpp b/src/gpu/effects/GrCustomXfermode.cpp
index 2ae8f9cfe1..5f0127b8ce 100644
--- a/src/gpu/effects/GrCustomXfermode.cpp
+++ b/src/gpu/effects/GrCustomXfermode.cpp
@@ -153,12 +153,8 @@ private:
// Apply coverage by multiplying it into the src color before blending. Mixed samples will
// "just work" automatically. (See onGetOptimizations())
- if (args.fInputCoverage) {
- fragBuilder->codeAppendf("%s = %s * %s;",
- args.fOutputPrimary, args.fInputCoverage, args.fInputColor);
- } else {
- fragBuilder->codeAppendf("%s = %s;", args.fOutputPrimary, args.fInputColor);
- }
+ fragBuilder->codeAppendf("%s = %s * %s;", args.fOutputPrimary, args.fInputCoverage,
+ args.fInputColor);
}
void emitBlendCodeForDstRead(GrGLSLXPFragmentBuilder* fragBuilder,
@@ -306,9 +302,6 @@ GrXferProcessor::OptFlags CustomXP::onGetOptimizations(const GrPipelineAnalysis&
if (analysis.fColorPOI.allStagesMultiplyInput()) {
flags |= kCanTweakAlphaForCoverage_OptFlag;
}
- if (this->hasHWBlendEquation() && analysis.fCoveragePOI.isSolidWhite()) {
- flags |= kIgnoreCoverage_OptFlag;
- }
return flags;
}
diff --git a/src/gpu/effects/GrDisableColorXP.cpp b/src/gpu/effects/GrDisableColorXP.cpp
index cfc7e035c1..0182acc8a6 100644
--- a/src/gpu/effects/GrDisableColorXP.cpp
+++ b/src/gpu/effects/GrDisableColorXP.cpp
@@ -33,7 +33,7 @@ private:
bool doesStencilWrite,
GrColor* color,
const GrCaps& caps) const override {
- return GrXferProcessor::kIgnoreColor_OptFlag | GrXferProcessor::kIgnoreCoverage_OptFlag;
+ return GrXferProcessor::kIgnoreColor_OptFlag;
}
void onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override;
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
index a6b5bbb6fd..df8b96d374 100644
--- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp
+++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
@@ -386,45 +386,27 @@ static void append_color_output(const PorterDuffXferProcessor& xp,
GrGLSLXPFragmentBuilder* fragBuilder,
BlendFormula::OutputType outputType, const char* output,
const char* inColor, const char* inCoverage) {
+ SkASSERT(inCoverage);
+ SkASSERT(inColor);
switch (outputType) {
case BlendFormula::kNone_OutputType:
fragBuilder->codeAppendf("%s = vec4(0.0);", output);
break;
case BlendFormula::kCoverage_OutputType:
// We can have a coverage formula while not reading coverage if there are mixed samples.
- if (inCoverage) {
- fragBuilder->codeAppendf("%s = %s;", output, inCoverage);
- } else {
- fragBuilder->codeAppendf("%s = vec4(1.0);", output);
- }
+ fragBuilder->codeAppendf("%s = %s;", output, inCoverage);
break;
case BlendFormula::kModulate_OutputType:
- if (inCoverage) {
- fragBuilder->codeAppendf("%s = %s * %s;", output, inColor, inCoverage);
- } else {
- fragBuilder->codeAppendf("%s = %s;", output, inColor);
- }
+ fragBuilder->codeAppendf("%s = %s * %s;", output, inColor, inCoverage);
break;
case BlendFormula::kSAModulate_OutputType:
- if (inCoverage) {
- fragBuilder->codeAppendf("%s = %s.a * %s;", output, inColor, inCoverage);
- } else {
- fragBuilder->codeAppendf("%s = %s;", output, inColor);
- }
+ fragBuilder->codeAppendf("%s = %s.a * %s;", output, inColor, inCoverage);
break;
case BlendFormula::kISAModulate_OutputType:
- if (inCoverage) {
- fragBuilder->codeAppendf("%s = (1.0 - %s.a) * %s;", output, inColor, inCoverage);
- } else {
- fragBuilder->codeAppendf("%s = vec4(1.0 - %s.a);", output, inColor);
- }
+ fragBuilder->codeAppendf("%s = (1.0 - %s.a) * %s;", output, inColor, inCoverage);
break;
case BlendFormula::kISCModulate_OutputType:
- if (inCoverage) {
- fragBuilder->codeAppendf("%s = (vec4(1.0) - %s) * %s;", output, inColor, inCoverage);
- } else {
- fragBuilder->codeAppendf("%s = vec4(1.0) - %s;", output, inColor);
- }
+ fragBuilder->codeAppendf("%s = (vec4(1.0) - %s) * %s;", output, inColor, inCoverage);
break;
default:
SkFAIL("Unsupported output type.");
@@ -482,15 +464,11 @@ GrXferProcessor::OptFlags PorterDuffXferProcessor::onGetOptimizations(
optFlags |= GrXferProcessor::kSkipDraw_OptFlag;
}
optFlags |= (GrXferProcessor::kIgnoreColor_OptFlag |
- GrXferProcessor::kIgnoreCoverage_OptFlag |
GrXferProcessor::kCanTweakAlphaForCoverage_OptFlag);
} else {
if (!fBlendFormula.usesInputColor()) {
optFlags |= GrXferProcessor::kIgnoreColor_OptFlag;
}
- if (analysis.fCoveragePOI.isSolidWhite()) {
- optFlags |= GrXferProcessor::kIgnoreCoverage_OptFlag;
- }
if (analysis.fColorPOI.allStagesMultiplyInput() &&
fBlendFormula.canTweakAlphaForCoverage() &&
!analysis.fCoveragePOI.isFourChannelOutput()) {
diff --git a/src/gpu/glsl/GrGLSLProgramBuilder.cpp b/src/gpu/glsl/GrGLSLProgramBuilder.cpp
index 1182996b4c..c8058251e1 100644
--- a/src/gpu/glsl/GrGLSLProgramBuilder.cpp
+++ b/src/gpu/glsl/GrGLSLProgramBuilder.cpp
@@ -65,8 +65,7 @@ bool GrGLSLProgramBuilder::emitAndInstallProcs(GrGLSLExpr4* inputColor,
if (primProc.getPixelLocalStorageState() !=
GrPixelLocalStorageState::kDraw_GrPixelLocalStorageState) {
this->emitAndInstallXferProc(this->pipeline().getXferProcessor(), *inputColor,
- *inputCoverage, this->pipeline().ignoresCoverage(),
- primProc.getPixelLocalStorageState());
+ *inputCoverage, primProc.getPixelLocalStorageState());
this->emitFSOutputSwizzle(this->pipeline().getXferProcessor().hasSecondaryOutput());
}
@@ -206,7 +205,6 @@ void GrGLSLProgramBuilder::emitAndInstallFragProc(const GrFragmentProcessor& fp,
void GrGLSLProgramBuilder::emitAndInstallXferProc(const GrXferProcessor& xp,
const GrGLSLExpr4& colorIn,
const GrGLSLExpr4& coverageIn,
- bool ignoresCoverage,
GrPixelLocalStorageState plsState) {
// Program builders have a bit of state we need to clear with each effect
AutoStageAdvance adv(this);
@@ -237,7 +235,7 @@ void GrGLSLProgramBuilder::emitAndInstallXferProc(const GrXferProcessor& xp,
this->uniformHandler(),
this->shaderCaps(),
xp, colorIn.c_str(),
- ignoresCoverage ? nullptr : coverageIn.c_str(),
+ coverageIn.c_str(),
fFS.getPrimaryColorOutputName(),
fFS.getSecondaryColorOutputName(),
texSamplers.begin(),
diff --git a/src/gpu/glsl/GrGLSLProgramBuilder.h b/src/gpu/glsl/GrGLSLProgramBuilder.h
index bfd9f7a427..2dba90fa90 100644
--- a/src/gpu/glsl/GrGLSLProgramBuilder.h
+++ b/src/gpu/glsl/GrGLSLProgramBuilder.h
@@ -159,7 +159,6 @@ private:
void emitAndInstallXferProc(const GrXferProcessor&,
const GrGLSLExpr4& colorIn,
const GrGLSLExpr4& coverageIn,
- bool ignoresCoverage,
GrPixelLocalStorageState plsState);
void emitSamplersAndImageStorages(const GrProcessor& processor,
SkTArray<SamplerHandle>* outTexSamplerHandles,
diff --git a/src/gpu/instanced/InstanceProcessor.cpp b/src/gpu/instanced/InstanceProcessor.cpp
index e890247bc9..8626eb92d4 100644
--- a/src/gpu/instanced/InstanceProcessor.cpp
+++ b/src/gpu/instanced/InstanceProcessor.cpp
@@ -354,8 +354,7 @@ void GLSLInstanceProcessor::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
}
SkASSERT(!(usedShapeDefinitions & (kRect_ShapeFlag | kComplexRRect_ShapeFlag)));
- backend->emitCode(v, f, pipeline.ignoresCoverage() ? nullptr : args.fOutputCoverage,
- args.fOutputColor);
+ backend->emitCode(v, f, args.fOutputCoverage, args.fOutputColor);
const char* localCoords = nullptr;
if (ip.opInfo().fUsesLocalCoords) {
diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp
index 38e60c7c1c..14106fec28 100644
--- a/src/gpu/ops/GrAAConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp
@@ -712,24 +712,18 @@ static void extract_verts(const GrAAConvexTessellator& tess,
static sk_sp<GrGeometryProcessor> create_fill_gp(bool tweakAlphaForCoverage,
const SkMatrix& viewMatrix,
- bool usesLocalCoords,
- bool coverageIgnored) {
+ bool usesLocalCoords) {
using namespace GrDefaultGeoProcFactory;
- Color color(Color::kAttribute_Type);
Coverage::Type coverageType;
- // TODO remove coverage if coverage is ignored
- /*if (coverageIgnored) {
- coverageType = Coverage::kNone_Type;
- } else*/ if (tweakAlphaForCoverage) {
+ if (tweakAlphaForCoverage) {
coverageType = Coverage::kSolid_Type;
} else {
coverageType = Coverage::kAttribute_Type;
}
- Coverage coverage(coverageType);
- LocalCoords localCoords(usesLocalCoords ? LocalCoords::kUsePosition_Type :
- LocalCoords::kUnused_Type);
- return MakeForDeviceSpace(color, coverage, localCoords, viewMatrix);
+ LocalCoords::Type localCoordsType =
+ usesLocalCoords ? LocalCoords::kUsePosition_Type : LocalCoords::kUnused_Type;
+ return MakeForDeviceSpace(Color::kAttribute_Type, coverageType, localCoordsType, viewMatrix);
}
class AAConvexPathOp final : public GrMeshDrawOp {
@@ -769,7 +763,6 @@ private:
optimizations.getOverrideColorIfSet(&fColor);
fUsesLocalCoords = optimizations.readsLocalCoords();
- fCoverageIgnored = !optimizations.readsCoverage();
fLinesOnly = SkPath::kLine_SegmentMask == fPaths[0].fPath.getSegmentMasks();
fCanTweakAlphaForCoverage = optimizations.canTweakAlphaForCoverage();
}
@@ -778,10 +771,8 @@ private:
bool canTweakAlphaForCoverage = this->canTweakAlphaForCoverage();
// Setup GrGeometryProcessor
- sk_sp<GrGeometryProcessor> gp(create_fill_gp(canTweakAlphaForCoverage,
- this->viewMatrix(),
- this->usesLocalCoords(),
- this->coverageIgnored()));
+ sk_sp<GrGeometryProcessor> gp(create_fill_gp(
+ canTweakAlphaForCoverage, this->viewMatrix(), this->usesLocalCoords()));
if (!gp) {
SkDebugf("Could not create GrGeometryProcessor\n");
return;
@@ -963,11 +954,9 @@ private:
bool usesLocalCoords() const { return fUsesLocalCoords; }
bool canTweakAlphaForCoverage() const { return fCanTweakAlphaForCoverage; }
const SkMatrix& viewMatrix() const { return fPaths[0].fViewMatrix; }
- bool coverageIgnored() const { return fCoverageIgnored; }
GrColor fColor;
bool fUsesLocalCoords;
- bool fCoverageIgnored;
bool fLinesOnly;
bool fCanTweakAlphaForCoverage;
diff --git a/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp b/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp
index a21d40bc73..fc141f732c 100644
--- a/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp
+++ b/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp
@@ -177,7 +177,6 @@ private:
fColorIgnored = !optimizations.readsColor();
fUsesLocalCoords = optimizations.readsLocalCoords();
- fCoverageIgnored = !optimizations.readsCoverage();
}
struct FlushInfo {
@@ -488,7 +487,6 @@ private:
SkMatrix fViewMatrix;
bool fUsesLocalCoords;
bool fColorIgnored;
- bool fCoverageIgnored;
struct Entry {
GrColor fColor;
diff --git a/src/gpu/ops/GrAAFillRectOp.cpp b/src/gpu/ops/GrAAFillRectOp.cpp
index 2189d86246..6ef48cbefc 100644
--- a/src/gpu/ops/GrAAFillRectOp.cpp
+++ b/src/gpu/ops/GrAAFillRectOp.cpp
@@ -220,11 +220,10 @@ private:
} else {
coverageType = Coverage::kAttribute_Type;
}
- Coverage coverage(coverageType);
LocalCoords lc =
needLocalCoords ? LocalCoords::kHasExplicit_Type : LocalCoords::kUnused_Type;
sk_sp<GrGeometryProcessor> gp =
- GrDefaultGeoProcFactory::Make(color, coverage, lc, SkMatrix::I());
+ GrDefaultGeoProcFactory::Make(color, coverageType, lc, SkMatrix::I());
if (!gp) {
SkDebugf("Couldn't create GrGeometryProcessor\n");
return;
diff --git a/src/gpu/ops/GrAAHairLinePathRenderer.cpp b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
index 6edef91008..c8533cbd2e 100644
--- a/src/gpu/ops/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
@@ -840,11 +840,10 @@ void AAHairlineOp::onPrepareDraws(Target* target) const {
using namespace GrDefaultGeoProcFactory;
Color color(this->color());
- Coverage coverage(Coverage::kAttribute_Type);
LocalCoords localCoords(this->usesLocalCoords() ? LocalCoords::kUsePosition_Type :
LocalCoords::kUnused_Type);
localCoords.fMatrix = geometryProcessorLocalM;
- lineGP = GrDefaultGeoProcFactory::Make(color, coverage, localCoords,
+ lineGP = GrDefaultGeoProcFactory::Make(color, Coverage::kAttribute_Type, localCoords,
*geometryProcessorViewM);
}
diff --git a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
index aa46ed3ac6..03e5ce3522 100644
--- a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
@@ -103,24 +103,18 @@ static void extract_verts(const GrAAConvexTessellator& tess,
static sk_sp<GrGeometryProcessor> create_fill_gp(bool tweakAlphaForCoverage,
const SkMatrix& viewMatrix,
- bool usesLocalCoords,
- bool coverageIgnored) {
+ bool usesLocalCoords) {
using namespace GrDefaultGeoProcFactory;
- Color color(Color::kAttribute_Type);
Coverage::Type coverageType;
- // TODO remove coverage if coverage is ignored
- /*if (coverageIgnored) {
- coverageType = Coverage::kNone_Type;
- } else*/ if (tweakAlphaForCoverage) {
+ if (tweakAlphaForCoverage) {
coverageType = Coverage::kSolid_Type;
} else {
coverageType = Coverage::kAttribute_Type;
}
- Coverage coverage(coverageType);
- LocalCoords localCoords(usesLocalCoords ? LocalCoords::kUsePosition_Type :
- LocalCoords::kUnused_Type);
- return MakeForDeviceSpace(color, coverage, localCoords, viewMatrix);
+ LocalCoords::Type localCoordsType =
+ usesLocalCoords ? LocalCoords::kUsePosition_Type : LocalCoords::kUnused_Type;
+ return MakeForDeviceSpace(Color::kAttribute_Type, coverageType, localCoordsType, viewMatrix);
}
class AAFlatteningConvexPathOp final : public GrMeshDrawOp {
@@ -191,7 +185,6 @@ private:
fColor = fPaths[0].fColor;
fUsesLocalCoords = optimizations.readsLocalCoords();
- fCoverageIgnored = !optimizations.readsCoverage();
fCanTweakAlphaForCoverage = optimizations.canTweakAlphaForCoverage();
}
@@ -228,10 +221,8 @@ private:
bool canTweakAlphaForCoverage = this->canTweakAlphaForCoverage();
// Setup GrGeometryProcessor
- sk_sp<GrGeometryProcessor> gp(create_fill_gp(canTweakAlphaForCoverage,
- this->viewMatrix(),
- this->usesLocalCoords(),
- this->coverageIgnored()));
+ sk_sp<GrGeometryProcessor> gp(create_fill_gp(
+ canTweakAlphaForCoverage, this->viewMatrix(), this->usesLocalCoords()));
if (!gp) {
SkDebugf("Couldn't create a GrGeometryProcessor\n");
return;
@@ -317,7 +308,6 @@ private:
bool usesLocalCoords() const { return fUsesLocalCoords; }
bool canTweakAlphaForCoverage() const { return fCanTweakAlphaForCoverage; }
const SkMatrix& viewMatrix() const { return fPaths[0].fViewMatrix; }
- bool coverageIgnored() const { return fCoverageIgnored; }
struct PathData {
GrColor fColor;
@@ -331,7 +321,6 @@ private:
GrColor fColor;
bool fUsesLocalCoords;
- bool fCoverageIgnored;
bool fCanTweakAlphaForCoverage;
SkSTArray<1, PathData, true> fPaths;
diff --git a/src/gpu/ops/GrAAStrokeRectOp.cpp b/src/gpu/ops/GrAAStrokeRectOp.cpp
index 1ececb356a..3c603bb228 100644
--- a/src/gpu/ops/GrAAStrokeRectOp.cpp
+++ b/src/gpu/ops/GrAAStrokeRectOp.cpp
@@ -97,17 +97,15 @@ static sk_sp<GrGeometryProcessor> create_stroke_rect_gp(bool tweakAlphaForCovera
bool usesLocalCoords) {
using namespace GrDefaultGeoProcFactory;
- Color color(Color::kAttribute_Type);
Coverage::Type coverageType;
if (tweakAlphaForCoverage) {
coverageType = Coverage::kSolid_Type;
} else {
coverageType = Coverage::kAttribute_Type;
}
- Coverage coverage(coverageType);
- LocalCoords localCoords(usesLocalCoords ? LocalCoords::kUsePosition_Type
- : LocalCoords::kUnused_Type);
- return MakeForDeviceSpace(color, coverage, localCoords, viewMatrix);
+ LocalCoords::Type localCoordsType =
+ usesLocalCoords ? LocalCoords::kUsePosition_Type : LocalCoords::kUnused_Type;
+ return MakeForDeviceSpace(Color::kAttribute_Type, coverageType, localCoordsType, viewMatrix);
}
class AAStrokeRectOp final : public GrMeshDrawOp {
diff --git a/src/gpu/ops/GrAtlasTextOp.cpp b/src/gpu/ops/GrAtlasTextOp.cpp
index c4c9170bde..8705bac411 100644
--- a/src/gpu/ops/GrAtlasTextOp.cpp
+++ b/src/gpu/ops/GrAtlasTextOp.cpp
@@ -75,7 +75,6 @@ void GrAtlasTextOp::applyPipelineOptimizations(const GrPipelineOptimizations& op
fColorIgnored = !optimizations.readsColor();
fColor = fGeoData[0].fColor;
fUsesLocalCoords = optimizations.readsLocalCoords();
- fCoverageIgnored = !optimizations.readsCoverage();
}
void GrAtlasTextOp::onPrepareDraws(Target* target) const {
diff --git a/src/gpu/ops/GrAtlasTextOp.h b/src/gpu/ops/GrAtlasTextOp.h
index ef724770c1..781e580515 100644
--- a/src/gpu/ops/GrAtlasTextOp.h
+++ b/src/gpu/ops/GrAtlasTextOp.h
@@ -154,7 +154,6 @@ private:
GrColor fColor;
bool fUsesLocalCoords;
bool fColorIgnored;
- bool fCoverageIgnored;
int fNumGlyphs;
// The minimum number of Geometry we will try to allocate.
diff --git a/src/gpu/ops/GrDashOp.cpp b/src/gpu/ops/GrDashOp.cpp
index 5ff3230b8c..caeff3d69f 100644
--- a/src/gpu/ops/GrDashOp.cpp
+++ b/src/gpu/ops/GrDashOp.cpp
@@ -309,7 +309,6 @@ private:
optimizations.getOverrideColorIfSet(&fColor);
fUsesLocalCoords = optimizations.readsLocalCoords();
- fCoverageIgnored = !optimizations.readsCoverage();
}
struct DashDraw {
@@ -346,11 +345,11 @@ private:
// Set up the vertex data for the line and start/end dashes
using namespace GrDefaultGeoProcFactory;
Color color(this->color());
- Coverage coverage(this->coverageIgnored() ? Coverage::kNone_Type :
- Coverage::kSolid_Type);
- LocalCoords localCoords(this->usesLocalCoords() ? LocalCoords::kUsePosition_Type :
- LocalCoords::kUnused_Type);
- gp = MakeForDeviceSpace(color, coverage, localCoords, this->viewMatrix());
+ LocalCoords::Type localCoordsType = this->usesLocalCoords()
+ ? LocalCoords::kUsePosition_Type
+ : LocalCoords::kUnused_Type;
+ gp = MakeForDeviceSpace(color, Coverage::kSolid_Type, localCoordsType,
+ this->viewMatrix());
}
if (!gp) {
@@ -672,14 +671,12 @@ private:
AAMode aaMode() const { return fAAMode; }
bool fullDash() const { return fFullDash; }
SkPaint::Cap cap() const { return fCap; }
- bool coverageIgnored() const { return fCoverageIgnored; }
static const int kVertsPerDash = 4;
static const int kIndicesPerDash = 6;
GrColor fColor;
bool fUsesLocalCoords;
- bool fCoverageIgnored;
SkPaint::Cap fCap;
AAMode fAAMode;
bool fFullDash;
diff --git a/src/gpu/ops/GrDefaultPathRenderer.cpp b/src/gpu/ops/GrDefaultPathRenderer.cpp
index c20a3d54dc..2b2501e20b 100644
--- a/src/gpu/ops/GrDefaultPathRenderer.cpp
+++ b/src/gpu/ops/GrDefaultPathRenderer.cpp
@@ -143,7 +143,6 @@ private:
}
optimizations.getOverrideColorIfSet(&fColor);
fUsesLocalCoords = optimizations.readsLocalCoords();
- fCoverageIgnored = !optimizations.readsCoverage();
}
void onPrepareDraws(Target* target) const override {
@@ -152,9 +151,6 @@ private:
using namespace GrDefaultGeoProcFactory;
Color color(this->color());
Coverage coverage(this->coverage());
- if (this->coverageIgnored()) {
- coverage.fType = Coverage::kNone_Type;
- }
LocalCoords localCoords(this->usesLocalCoords() ? LocalCoords::kUsePosition_Type :
LocalCoords::kUnused_Type);
gp = GrDefaultGeoProcFactory::Make(color, coverage, localCoords, this->viewMatrix());
@@ -395,7 +391,6 @@ private:
bool usesLocalCoords() const { return fUsesLocalCoords; }
const SkMatrix& viewMatrix() const { return fViewMatrix; }
bool isHairline() const { return fIsHairline; }
- bool coverageIgnored() const { return fCoverageIgnored; }
struct PathData {
SkPath fPath;
@@ -406,7 +401,6 @@ private:
uint8_t fCoverage;
SkMatrix fViewMatrix;
bool fUsesLocalCoords;
- bool fCoverageIgnored;
bool fIsHairline;
SkSTArray<1, PathData, true> fPaths;
diff --git a/src/gpu/ops/GrDrawAtlasOp.cpp b/src/gpu/ops/GrDrawAtlasOp.cpp
index eac8f96167..2c8e34bdce 100644
--- a/src/gpu/ops/GrDrawAtlasOp.cpp
+++ b/src/gpu/ops/GrDrawAtlasOp.cpp
@@ -31,28 +31,24 @@ void GrDrawAtlasOp::applyPipelineOptimizations(const GrPipelineOptimizations& op
fColor = fGeoData[0].fColor;
// We'd like to assert this, but we can't because of GLPrograms test
// SkASSERT(init.readsLocalCoords());
- fCoverageIgnored = !optimizations.readsCoverage();
}
-static sk_sp<GrGeometryProcessor> set_vertex_attributes(bool hasColors,
- GrColor color,
- const SkMatrix& viewMatrix,
- bool coverageIgnored) {
+static sk_sp<GrGeometryProcessor> make_gp(bool hasColors,
+ GrColor color,
+ const SkMatrix& viewMatrix) {
using namespace GrDefaultGeoProcFactory;
Color gpColor(color);
if (hasColors) {
gpColor.fType = Color::kAttribute_Type;
}
- Coverage coverage(coverageIgnored ? Coverage::kNone_Type : Coverage::kSolid_Type);
- LocalCoords localCoords(LocalCoords::kHasExplicit_Type);
- return GrDefaultGeoProcFactory::Make(gpColor, coverage, localCoords, viewMatrix);
+ return GrDefaultGeoProcFactory::Make(gpColor, Coverage::kSolid_Type,
+ LocalCoords::kHasExplicit_Type, viewMatrix);
}
void GrDrawAtlasOp::onPrepareDraws(Target* target) const {
// Setup geometry processor
- sk_sp<GrGeometryProcessor> gp(set_vertex_attributes(
- this->hasColors(), this->color(), this->viewMatrix(), this->coverageIgnored()));
+ sk_sp<GrGeometryProcessor> gp(make_gp(this->hasColors(), this->color(), this->viewMatrix()));
int instanceCount = fGeoData.count();
size_t vertexStride = gp->getVertexStride();
diff --git a/src/gpu/ops/GrDrawAtlasOp.h b/src/gpu/ops/GrDrawAtlasOp.h
index 60158e0c6a..8251386eab 100644
--- a/src/gpu/ops/GrDrawAtlasOp.h
+++ b/src/gpu/ops/GrDrawAtlasOp.h
@@ -57,7 +57,6 @@ private:
const SkMatrix& viewMatrix() const { return fViewMatrix; }
bool hasColors() const { return fHasColors; }
int quadCount() const { return fQuadCount; }
- bool coverageIgnored() const { return fCoverageIgnored; }
bool onCombineIfPossible(GrOp* t, const GrCaps&) override;
@@ -72,7 +71,6 @@ private:
GrColor fColor;
int fQuadCount;
bool fColorIgnored;
- bool fCoverageIgnored;
bool fHasColors;
typedef GrMeshDrawOp INHERITED;
diff --git a/src/gpu/ops/GrDrawVerticesOp.cpp b/src/gpu/ops/GrDrawVerticesOp.cpp
index db505f9b42..ed2c072b03 100644
--- a/src/gpu/ops/GrDrawVerticesOp.cpp
+++ b/src/gpu/ops/GrDrawVerticesOp.cpp
@@ -14,21 +14,19 @@
static sk_sp<GrGeometryProcessor> set_vertex_attributes(bool hasLocalCoords,
int* colorOffset,
int* texOffset,
- const SkMatrix& viewMatrix,
- bool coverageIgnored) {
+ const SkMatrix& viewMatrix) {
using namespace GrDefaultGeoProcFactory;
*texOffset = -1;
*colorOffset = -1;
- Coverage coverage(coverageIgnored ? Coverage::kNone_Type : Coverage::kSolid_Type);
- LocalCoords localCoords(hasLocalCoords ? LocalCoords::kHasExplicit_Type
- : LocalCoords::kUsePosition_Type);
+ LocalCoords::Type localCoordsType =
+ hasLocalCoords ? LocalCoords::kHasExplicit_Type : LocalCoords::kUsePosition_Type;
*colorOffset = sizeof(SkPoint);
if (hasLocalCoords) {
*texOffset = sizeof(SkPoint) + sizeof(GrColor);
}
- return GrDefaultGeoProcFactory::Make(Color(Color::kAttribute_Type), coverage, localCoords,
- viewMatrix);
+ return GrDefaultGeoProcFactory::Make(Color::kAttribute_Type, Coverage::kSolid_Type,
+ localCoordsType, viewMatrix);
}
GrDrawVerticesOp::GrDrawVerticesOp(GrColor color, GrPrimitiveType primitiveType,
@@ -88,7 +86,6 @@ void GrDrawVerticesOp::applyPipelineOptimizations(const GrPipelineOptimizations&
fMeshes[0].fColors.reset();
fVariableColor = false;
}
- fCoverageIgnored = !optimizations.readsCoverage();
if (!optimizations.readsLocalCoords()) {
fMeshes[0].fLocalCoords.reset();
}
@@ -97,8 +94,8 @@ void GrDrawVerticesOp::applyPipelineOptimizations(const GrPipelineOptimizations&
void GrDrawVerticesOp::onPrepareDraws(Target* target) const {
bool hasLocalCoords = !fMeshes[0].fLocalCoords.isEmpty();
int colorOffset = -1, texOffset = -1;
- sk_sp<GrGeometryProcessor> gp(set_vertex_attributes(hasLocalCoords, &colorOffset, &texOffset,
- fViewMatrix, fCoverageIgnored));
+ sk_sp<GrGeometryProcessor> gp(
+ set_vertex_attributes(hasLocalCoords, &colorOffset, &texOffset, fViewMatrix));
size_t vertexStride = gp->getVertexStride();
SkASSERT(vertexStride ==
diff --git a/src/gpu/ops/GrDrawVerticesOp.h b/src/gpu/ops/GrDrawVerticesOp.h
index b0697f4f3b..680b41fbac 100644
--- a/src/gpu/ops/GrDrawVerticesOp.h
+++ b/src/gpu/ops/GrDrawVerticesOp.h
@@ -75,7 +75,6 @@ private:
bool fVariableColor;
int fVertexCount;
int fIndexCount;
- bool fCoverageIgnored; // comes from applyPipelineOptimizations.
SkSTArray<1, Mesh, true> fMeshes;
diff --git a/src/gpu/ops/GrLatticeOp.cpp b/src/gpu/ops/GrLatticeOp.cpp
index e3881ba7ef..9141b34fe2 100644
--- a/src/gpu/ops/GrLatticeOp.cpp
+++ b/src/gpu/ops/GrLatticeOp.cpp
@@ -15,12 +15,10 @@
#include "SkLatticeIter.h"
#include "SkRect.h"
-static sk_sp<GrGeometryProcessor> create_gp(bool readsCoverage) {
+static sk_sp<GrGeometryProcessor> create_gp() {
using namespace GrDefaultGeoProcFactory;
- Color color(Color::kAttribute_Type);
- Coverage coverage(readsCoverage ? Coverage::kSolid_Type : Coverage::kNone_Type);
- LocalCoords localCoords(LocalCoords::kHasExplicit_Type);
- return GrDefaultGeoProcFactory::Make(color, coverage, localCoords, SkMatrix::I());
+ return GrDefaultGeoProcFactory::Make(Color::kAttribute_Type, Coverage::kSolid_Type,
+ LocalCoords::kHasExplicit_Type, SkMatrix::I());
}
class NonAALatticeOp final : public GrMeshDrawOp {
@@ -74,7 +72,7 @@ private:
}
void onPrepareDraws(Target* target) const override {
- sk_sp<GrGeometryProcessor> gp(create_gp(fOptimizations.readsCoverage()));
+ sk_sp<GrGeometryProcessor> gp(create_gp());
if (!gp) {
SkDebugf("Couldn't create GrGeometryProcessor\n");
return;
diff --git a/src/gpu/ops/GrMSAAPathRenderer.cpp b/src/gpu/ops/GrMSAAPathRenderer.cpp
index 0774fdbc1a..a45e6fad15 100644
--- a/src/gpu/ops/GrMSAAPathRenderer.cpp
+++ b/src/gpu/ops/GrMSAAPathRenderer.cpp
@@ -404,7 +404,7 @@ private:
{
using namespace GrDefaultGeoProcFactory;
lineGP = GrDefaultGeoProcFactory::Make(Color(Color::kAttribute_Type),
- Coverage(255),
+ Coverage::kSolid_Type,
LocalCoords(LocalCoords::kUnused_Type),
fViewMatrix);
}
diff --git a/src/gpu/ops/GrNonAAFillRectOp.cpp b/src/gpu/ops/GrNonAAFillRectOp.cpp
index 26bee83cc6..1e4fde4d58 100644
--- a/src/gpu/ops/GrNonAAFillRectOp.cpp
+++ b/src/gpu/ops/GrNonAAFillRectOp.cpp
@@ -28,13 +28,10 @@ static const int kIndicesPerInstance = 6;
The vertex attrib order is always pos, color, [local coords].
*/
-static sk_sp<GrGeometryProcessor> make_gp(bool readsCoverage) {
+static sk_sp<GrGeometryProcessor> make_gp() {
using namespace GrDefaultGeoProcFactory;
- Color color(Color::kAttribute_Type);
- Coverage coverage(readsCoverage ? Coverage::kSolid_Type : Coverage::kNone_Type);
-
- LocalCoords localCoords(LocalCoords::kHasExplicit_Type);
- return GrDefaultGeoProcFactory::Make(color, coverage, localCoords, SkMatrix::I());
+ return GrDefaultGeoProcFactory::Make(Color::kAttribute_Type, Coverage::kSolid_Type,
+ LocalCoords::kHasExplicit_Type, SkMatrix::I());
}
static void tesselate(intptr_t vertices,
@@ -124,7 +121,7 @@ private:
}
void onPrepareDraws(Target* target) const override {
- sk_sp<GrGeometryProcessor> gp = make_gp(fOptimizations.readsCoverage());
+ sk_sp<GrGeometryProcessor> gp = make_gp();
if (!gp) {
SkDebugf("Couldn't create GrGeometryProcessor\n");
return;
diff --git a/src/gpu/ops/GrNonAAFillRectPerspectiveOp.cpp b/src/gpu/ops/GrNonAAFillRectPerspectiveOp.cpp
index 10053fe577..284556b112 100644
--- a/src/gpu/ops/GrNonAAFillRectPerspectiveOp.cpp
+++ b/src/gpu/ops/GrNonAAFillRectPerspectiveOp.cpp
@@ -27,14 +27,11 @@ static const int kIndicesPerInstance = 6;
The vertex attrib order is always pos, color, [local coords].
*/
static sk_sp<GrGeometryProcessor> make_persp_gp(const SkMatrix& viewMatrix,
- bool readsCoverage,
bool hasExplicitLocalCoords,
const SkMatrix* localMatrix) {
SkASSERT(viewMatrix.hasPerspective() || (localMatrix && localMatrix->hasPerspective()));
using namespace GrDefaultGeoProcFactory;
- Color color(Color::kAttribute_Type);
- Coverage coverage(readsCoverage ? Coverage::kSolid_Type : Coverage::kNone_Type);
// If we have perspective on the viewMatrix then we won't map on the CPU, nor will we map
// the local rect on the cpu (in case the localMatrix also has perspective).
@@ -44,14 +41,16 @@ static sk_sp<GrGeometryProcessor> make_persp_gp(const SkMatrix& viewMatrix,
LocalCoords localCoords(hasExplicitLocalCoords ? LocalCoords::kHasExplicit_Type
: LocalCoords::kUsePosition_Type,
localMatrix);
- return GrDefaultGeoProcFactory::Make(color, coverage, localCoords, viewMatrix);
+ return GrDefaultGeoProcFactory::Make(Color::kAttribute_Type, Coverage::kSolid_Type,
+ localCoords, viewMatrix);
} else if (hasExplicitLocalCoords) {
LocalCoords localCoords(LocalCoords::kHasExplicit_Type, localMatrix);
- return GrDefaultGeoProcFactory::Make(color, coverage, localCoords, SkMatrix::I());
+ return GrDefaultGeoProcFactory::Make(Color::kAttribute_Type, Coverage::kSolid_Type,
+ localCoords, SkMatrix::I());
} else {
LocalCoords localCoords(LocalCoords::kUsePosition_Type, localMatrix);
- return GrDefaultGeoProcFactory::MakeForDeviceSpace(color, coverage, localCoords,
- viewMatrix);
+ return GrDefaultGeoProcFactory::MakeForDeviceSpace(
+ Color::kAttribute_Type, Coverage::kSolid_Type, localCoords, viewMatrix);
}
}
@@ -142,7 +141,6 @@ private:
void onPrepareDraws(Target* target) const override {
sk_sp<GrGeometryProcessor> gp = make_persp_gp(fViewMatrix,
- fOptimizations.readsCoverage(),
fHasLocalRect,
fHasLocalMatrix ? &fLocalMatrix : nullptr);
if (!gp) {
diff --git a/src/gpu/ops/GrNonAAStrokeRectOp.cpp b/src/gpu/ops/GrNonAAStrokeRectOp.cpp
index 3f63a91877..0732e4ecea 100644
--- a/src/gpu/ops/GrNonAAStrokeRectOp.cpp
+++ b/src/gpu/ops/GrNonAAStrokeRectOp.cpp
@@ -111,12 +111,11 @@ private:
{
using namespace GrDefaultGeoProcFactory;
Color color(fColor);
- Coverage coverage(fOptimizations.readsCoverage() ? Coverage::kSolid_Type
- : Coverage::kNone_Type);
- LocalCoords localCoords(fOptimizations.readsLocalCoords()
- ? LocalCoords::kUsePosition_Type
- : LocalCoords::kUnused_Type);
- gp = GrDefaultGeoProcFactory::Make(color, coverage, localCoords, fViewMatrix);
+ LocalCoords::Type localCoordsType = fOptimizations.readsLocalCoords()
+ ? LocalCoords::kUsePosition_Type
+ : LocalCoords::kUnused_Type;
+ gp = GrDefaultGeoProcFactory::Make(color, Coverage::kSolid_Type, localCoordsType,
+ fViewMatrix);
}
size_t vertexStride = gp->getVertexStride();
diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp
index a01402071a..51db03542c 100644
--- a/src/gpu/ops/GrOvalOpFactory.cpp
+++ b/src/gpu/ops/GrOvalOpFactory.cpp
@@ -1251,7 +1251,7 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsCoverage()) {
+ if (!optimizations.readsColor()) {
fGeoData[0].fColor = GrColor_ILLEGAL;
}
if (!optimizations.readsLocalCoords()) {
diff --git a/src/gpu/ops/GrRegionOp.cpp b/src/gpu/ops/GrRegionOp.cpp
index 7fbdd75ab0..ea0af73ca1 100644
--- a/src/gpu/ops/GrRegionOp.cpp
+++ b/src/gpu/ops/GrRegionOp.cpp
@@ -17,13 +17,10 @@
static const int kVertsPerInstance = 4;
static const int kIndicesPerInstance = 6;
-static sk_sp<GrGeometryProcessor> make_gp(bool readsCoverage, const SkMatrix& viewMatrix) {
+static sk_sp<GrGeometryProcessor> make_gp(const SkMatrix& viewMatrix) {
using namespace GrDefaultGeoProcFactory;
- Color color(Color::kAttribute_Type);
- Coverage coverage(readsCoverage ? Coverage::kSolid_Type : Coverage::kNone_Type);
-
- LocalCoords localCoords(LocalCoords::kUsePosition_Type);
- return GrDefaultGeoProcFactory::Make(color, coverage, localCoords, viewMatrix);
+ return GrDefaultGeoProcFactory::Make(Color::kAttribute_Type, Coverage::kSolid_Type,
+ LocalCoords::kUsePosition_Type, viewMatrix);
}
static void tesselate_region(intptr_t vertices,
@@ -91,7 +88,7 @@ private:
}
void onPrepareDraws(Target* target) const override {
- sk_sp<GrGeometryProcessor> gp = make_gp(fOptimizations.readsCoverage(), fViewMatrix);
+ sk_sp<GrGeometryProcessor> gp = make_gp(fViewMatrix);
if (!gp) {
SkDebugf("Couldn't create GrGeometryProcessor\n");
return;
diff --git a/src/gpu/ops/GrTessellatingPathRenderer.cpp b/src/gpu/ops/GrTessellatingPathRenderer.cpp
index 81a982ca20..afd953e917 100644
--- a/src/gpu/ops/GrTessellatingPathRenderer.cpp
+++ b/src/gpu/ops/GrTessellatingPathRenderer.cpp
@@ -278,9 +278,9 @@ private:
using namespace GrDefaultGeoProcFactory;
Color color(fColor);
- LocalCoords localCoords(fOptimizations.readsLocalCoords()
- ? LocalCoords::kUsePosition_Type
- : LocalCoords::kUnused_Type);
+ LocalCoords::Type localCoordsType = fOptimizations.readsLocalCoords()
+ ? LocalCoords::kUsePosition_Type
+ : LocalCoords::kUnused_Type;
Coverage::Type coverageType;
if (fAntiAlias) {
color = Color(Color::kAttribute_Type);
@@ -289,17 +289,15 @@ private:
} else {
coverageType = Coverage::kAttribute_Type;
}
- } else if (fOptimizations.readsCoverage()) {
- coverageType = Coverage::kSolid_Type;
} else {
- coverageType = Coverage::kNone_Type;
+ coverageType = Coverage::kSolid_Type;
}
- Coverage coverage(coverageType);
if (fAntiAlias) {
- gp = GrDefaultGeoProcFactory::MakeForDeviceSpace(color, coverage, localCoords,
- fViewMatrix);
+ gp = GrDefaultGeoProcFactory::MakeForDeviceSpace(color, coverageType,
+ localCoordsType, fViewMatrix);
} else {
- gp = GrDefaultGeoProcFactory::Make(color, coverage, localCoords, fViewMatrix);
+ gp = GrDefaultGeoProcFactory::Make(color, coverageType, localCoordsType,
+ fViewMatrix);
}
}
if (fAntiAlias) {
diff --git a/src/gpu/ops/GrTestMeshDrawOp.h b/src/gpu/ops/GrTestMeshDrawOp.h
index 7fc44e1593..8d5a896d81 100644
--- a/src/gpu/ops/GrTestMeshDrawOp.h
+++ b/src/gpu/ops/GrTestMeshDrawOp.h
@@ -33,7 +33,6 @@ protected:
struct Optimizations {
bool fColorIgnored = false;
bool fUsesLocalCoords = false;
- bool fCoverageIgnored = false;
};
const Optimizations optimizations() const { return fOptimizations; }
@@ -49,7 +48,6 @@ private:
fOptimizations.fColorIgnored = !optimizations.readsColor();
fOptimizations.fUsesLocalCoords = optimizations.readsLocalCoords();
- fOptimizations.fCoverageIgnored = !optimizations.readsCoverage();
}
bool onCombineIfPossible(GrOp*, const GrCaps&) override { return false; }
diff --git a/tests/GrPorterDuffTest.cpp b/tests/GrPorterDuffTest.cpp
index ce89793347..3e74a59228 100644
--- a/tests/GrPorterDuffTest.cpp
+++ b/tests/GrPorterDuffTest.cpp
@@ -59,7 +59,6 @@ enum {
kNone_OptFlags = GrXferProcessor::kNone_OptFlags,
kSkipDraw_OptFlag = GrXferProcessor::kSkipDraw_OptFlag,
kIgnoreColor_OptFlag = GrXferProcessor::kIgnoreColor_OptFlag,
- kIgnoreCoverage_OptFlag = GrXferProcessor::kIgnoreCoverage_OptFlag,
kCanTweakAlphaForCoverage_OptFlag = GrXferProcessor::kCanTweakAlphaForCoverage_OptFlag
};
@@ -136,7 +135,6 @@ static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps)
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
TEST_ASSERT((kSkipDraw_OptFlag |
kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -326,7 +324,6 @@ static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
TEST_ASSERT((kSkipDraw_OptFlag |
kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -496,8 +493,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kIgnoreColor_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -511,7 +507,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
TEST_ASSERT(154 == GrColorUnpackB(xpi.fBlendedColor.fKnownColor));
TEST_ASSERT((kR_GrColorComponentFlag |
kB_GrColorComponentFlag) == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -524,7 +520,6 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
TEST_ASSERT((kSkipDraw_OptFlag |
kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -536,8 +531,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kSrcOver:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -548,8 +542,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kDstOver:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -560,7 +553,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kSrcIn:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -571,7 +564,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kDstIn:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -582,7 +575,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kSrcOut:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -593,8 +586,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kDstOut:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -605,8 +597,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kSrcATop:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -617,7 +608,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kDstATop:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -628,8 +619,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kXor:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -640,8 +630,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kPlus:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -652,7 +641,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kModulate:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -663,8 +652,7 @@ static void test_color_unknown_no_coverage(skiatest::Reporter* reporter, const G
case SkBlendMode::kScreen:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -724,7 +712,6 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
TEST_ASSERT((kSkipDraw_OptFlag |
kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -772,7 +759,6 @@ static void test_color_opaque_with_coverage(skiatest::Reporter* reporter, const
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
TEST_ASSERT((kSkipDraw_OptFlag |
kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -899,8 +885,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kIgnoreColor_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -914,7 +899,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor));
TEST_ASSERT((kG_GrColorComponentFlag |
kA_GrColorComponentFlag) == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -927,7 +912,6 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
TEST_ASSERT((kSkipDraw_OptFlag |
kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -942,7 +926,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor));
TEST_ASSERT((kG_GrColorComponentFlag |
kA_GrColorComponentFlag) == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -953,8 +937,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
case SkBlendMode::kDstOver:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -965,7 +948,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
case SkBlendMode::kSrcIn:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -978,7 +961,6 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
TEST_ASSERT((kSkipDraw_OptFlag |
kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag |
kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
@@ -990,7 +972,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
case SkBlendMode::kSrcOut:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -1002,8 +984,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreColor_OptFlag |
- kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kIgnoreColor_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -1014,7 +995,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
case SkBlendMode::kSrcATop:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -1025,8 +1006,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
case SkBlendMode::kDstATop:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -1037,7 +1017,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
case SkBlendMode::kXor:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -1048,8 +1028,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
case SkBlendMode::kPlus:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -1060,7 +1039,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
case SkBlendMode::kModulate:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kNone_OptFlags == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
@@ -1071,8 +1050,7 @@ static void test_color_opaque_no_coverage(skiatest::Reporter* reporter, const Gr
case SkBlendMode::kScreen:
TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
- TEST_ASSERT((kIgnoreCoverage_OptFlag |
- kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
+ TEST_ASSERT(kCanTweakAlphaForCoverage_OptFlag == xpi.fOptFlags);
TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);