aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-01-04 13:22:08 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-04 19:23:05 +0000
commitbfd5183b9e039b50fb33441d1f90130b8eced80a (patch)
tree5b1aff9c95eb6cff4d5caee353f10265b7bdc4b9 /src/gpu
parent0bd783f951a004ccca175b166f2b30a0fd18a6f6 (diff)
Removes tracking of whether color is ignored by XP.
Removes the feedback to GrDrawOp via GrPipelineOptimizations. Change-Id: I3cb17cad41779af292a92385fcd5ac23ae5a1ffd Reviewed-on: https://skia-review.googlesource.com/6561 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu')
-rw-r--r--src/gpu/GrDefaultGeoProcFactory.cpp20
-rw-r--r--src/gpu/GrPathProcessor.cpp21
-rw-r--r--src/gpu/GrPipeline.cpp22
-rw-r--r--src/gpu/GrPipeline.h10
-rw-r--r--src/gpu/GrPrimitiveProcessor.h15
-rw-r--r--src/gpu/effects/GrBezierEffect.cpp11
-rw-r--r--src/gpu/effects/GrBezierEffect.h2
-rw-r--r--src/gpu/effects/GrBitmapTextGeoProc.cpp33
-rw-r--r--src/gpu/effects/GrBitmapTextGeoProc.h1
-rw-r--r--src/gpu/effects/GrDistanceFieldGeoProc.cpp21
-rw-r--r--src/gpu/effects/GrDistanceFieldGeoProc.h3
-rwxr-xr-xsrc/gpu/effects/GrShadowGeoProc.h1
-rw-r--r--src/gpu/ops/GrAAConvexPathRenderer.cpp18
-rw-r--r--src/gpu/ops/GrAADistanceFieldPathRenderer.cpp6
-rw-r--r--src/gpu/ops/GrAAHairLinePathRenderer.cpp3
-rw-r--r--src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp7
-rw-r--r--src/gpu/ops/GrAAStrokeRectOp.cpp3
-rw-r--r--src/gpu/ops/GrAtlasTextOp.cpp4
-rw-r--r--src/gpu/ops/GrAtlasTextOp.h1
-rw-r--r--src/gpu/ops/GrDashOp.cpp25
-rw-r--r--src/gpu/ops/GrDefaultPathRenderer.cpp3
-rw-r--r--src/gpu/ops/GrDrawAtlasOp.cpp7
-rw-r--r--src/gpu/ops/GrDrawAtlasOp.h2
-rw-r--r--src/gpu/ops/GrMSAAPathRenderer.cpp3
-rw-r--r--src/gpu/ops/GrOvalOpFactory.cpp3
-rw-r--r--src/gpu/ops/GrPLSPathRenderer.cpp12
-rw-r--r--src/gpu/ops/GrTessellatingPathRenderer.cpp3
-rw-r--r--src/gpu/ops/GrTestMeshDrawOp.h15
28 files changed, 63 insertions, 212 deletions
diff --git a/src/gpu/GrDefaultGeoProcFactory.cpp b/src/gpu/GrDefaultGeoProcFactory.cpp
index 8970803bb6..9da0ffee3f 100644
--- a/src/gpu/GrDefaultGeoProcFactory.cpp
+++ b/src/gpu/GrDefaultGeoProcFactory.cpp
@@ -47,7 +47,6 @@ public:
const Attribute* inLocalCoords() const { return fInLocalCoords; }
const Attribute* inCoverage() const { return fInCoverage; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
bool hasVertexColor() const { return SkToBool(fInColor); }
const SkMatrix& viewMatrix() const { return fViewMatrix; }
const SkMatrix& localMatrix() const { return fLocalMatrix; }
@@ -71,13 +70,11 @@ public:
varyingHandler->emitAttributes(gp);
// Setup pass through color
- if (!gp.colorIgnored()) {
- if (gp.hasVertexColor()) {
- varyingHandler->addPassThroughAttribute(gp.inColor(), args.fOutputColor);
- } else {
- this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor,
- &fColorUniform);
- }
+ if (gp.hasVertexColor()) {
+ varyingHandler->addPassThroughAttribute(gp.inColor(), args.fOutputColor);
+ } else {
+ this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor,
+ &fColorUniform);
}
// Setup position
@@ -131,10 +128,9 @@ public:
GrProcessorKeyBuilder* b) {
const DefaultGeoProc& def = gp.cast<DefaultGeoProc>();
uint32_t key = def.fFlags;
- key |= def.colorIgnored() << 8;
- key |= def.hasVertexColor() << 9;
- key |= def.hasVertexCoverage() << 10;
- key |= (def.coverage() == 0xff) ? (0x1 << 11) : 0;
+ key |= def.hasVertexColor() << 8;
+ key |= def.hasVertexCoverage() << 9;
+ key |= (def.coverage() == 0xff) ? (0x1 << 10) : 0;
key |= (def.localCoordsWillBeRead() && def.localMatrix().hasPerspective()) ? (0x1 << 24)
: 0x0;
key |= ComputePosKey(def.viewMatrix()) << 25;
diff --git a/src/gpu/GrPathProcessor.cpp b/src/gpu/GrPathProcessor.cpp
index 3d78c62684..910c3c919e 100644
--- a/src/gpu/GrPathProcessor.cpp
+++ b/src/gpu/GrPathProcessor.cpp
@@ -20,8 +20,7 @@ public:
static void GenKey(const GrPathProcessor& pathProc,
const GrShaderCaps&,
GrProcessorKeyBuilder* b) {
- b->add32(SkToInt(pathProc.optimizations().readsColor()) |
- (SkToInt(pathProc.viewMatrix().hasPerspective()) << 2));
+ b->add32(SkToInt(pathProc.viewMatrix().hasPerspective()));
}
void emitCode(EmitArgs& args) override {
@@ -36,15 +35,13 @@ public:
this->emitTransforms(args.fVaryingHandler, args.fFPCoordTransformHandler);
// Setup uniform color
- if (pathProc.optimizations().readsColor()) {
- const char* stagedLocalVarName;
- fColorUniform = args.fUniformHandler->addUniform(kFragment_GrShaderFlag,
- kVec4f_GrSLType,
- kDefault_GrSLPrecision,
- "Color",
- &stagedLocalVarName);
- fragBuilder->codeAppendf("%s = %s;", args.fOutputColor, stagedLocalVarName);
- }
+ const char* stagedLocalVarName;
+ fColorUniform = args.fUniformHandler->addUniform(kFragment_GrShaderFlag,
+ kVec4f_GrSLType,
+ kDefault_GrSLPrecision,
+ "Color",
+ &stagedLocalVarName);
+ fragBuilder->codeAppendf("%s = %s;", args.fOutputColor, stagedLocalVarName);
// setup constant solid coverage
fragBuilder->codeAppendf("%s = vec4(1);", args.fOutputCoverage);
@@ -76,7 +73,7 @@ public:
const GrPrimitiveProcessor& primProc,
FPCoordTransformIter&& transformIter) override {
const GrPathProcessor& pathProc = primProc.cast<GrPathProcessor>();
- if (pathProc.optimizations().readsColor() && pathProc.color() != fColor) {
+ if (pathProc.color() != fColor) {
float c[4];
GrColorToRGBAFloat(pathProc.color(), c);
pd.set4fv(fColorUniform, 1, c);
diff --git a/src/gpu/GrPipeline.cpp b/src/gpu/GrPipeline.cpp
index 22818299cd..ea3f0f234f 100644
--- a/src/gpu/GrPipeline.cpp
+++ b/src/gpu/GrPipeline.cpp
@@ -111,9 +111,10 @@ GrPipeline* GrPipeline::CreateAt(void* memory, const CreateArgs& args,
// information.
int firstCoverageProcessorIdx = 0;
- pipeline->adjustProgramFromOptimizations(builder, optFlags, args.fAnalysis.fColorPOI,
- args.fAnalysis.fCoveragePOI, &firstColorProcessorIdx,
- &firstCoverageProcessorIdx);
+ if ((optFlags & GrXferProcessor::kIgnoreColor_OptFlag) ||
+ (optFlags & GrXferProcessor::kOverrideColor_OptFlag)) {
+ firstColorProcessorIdx = builder.numColorFragmentProcessors();
+ }
bool usesLocalCoords = false;
@@ -139,9 +140,6 @@ GrPipeline* GrPipeline::CreateAt(void* memory, const CreateArgs& args,
// Setup info we need to pass to GrPrimitiveProcessors that are used with this GrPipeline.
optimizations->fFlags = 0;
- if (!SkToBool(optFlags & GrXferProcessor::kIgnoreColor_OptFlag)) {
- optimizations->fFlags |= GrPipelineOptimizations::kReadsColor_Flag;
- }
if (GrColor_ILLEGAL != overrideColor) {
optimizations->fFlags |= GrPipelineOptimizations::kUseOverrideColor_Flag;
optimizations->fOverrideColor = overrideColor;
@@ -191,18 +189,6 @@ void GrPipeline::addDependenciesTo(GrRenderTarget* rt) const {
}
}
-void GrPipeline::adjustProgramFromOptimizations(const GrPipelineBuilder& pipelineBuilder,
- GrXferProcessor::OptFlags flags,
- const GrProcOptInfo& colorPOI,
- const GrProcOptInfo& coveragePOI,
- int* firstColorProcessorIdx,
- int* firstCoverageProcessorIdx) {
- if ((flags & GrXferProcessor::kIgnoreColor_OptFlag) ||
- (flags & GrXferProcessor::kOverrideColor_OptFlag)) {
- *firstColorProcessorIdx = pipelineBuilder.numColorFragmentProcessors();
- }
-}
-
////////////////////////////////////////////////////////////////////////////////
bool GrPipeline::AreEqual(const GrPipeline& a, const GrPipeline& b) {
diff --git a/src/gpu/GrPipeline.h b/src/gpu/GrPipeline.h
index 3e25fda0e1..0013ce6dd6 100644
--- a/src/gpu/GrPipeline.h
+++ b/src/gpu/GrPipeline.h
@@ -203,16 +203,6 @@ private:
GrPipeline() { /** Initialized in factory function*/ }
/**
- * Alter the program desc and inputs (attribs and processors) based on the blend optimization.
- */
- void adjustProgramFromOptimizations(const GrPipelineBuilder& ds,
- GrXferProcessor::OptFlags,
- const GrProcOptInfo& colorPOI,
- const GrProcOptInfo& coveragePOI,
- int* firstColorProcessorIdx,
- int* firstCoverageProcessorIdx);
-
- /**
* Calculates the primary and secondary output types of the shader. For certain output types
* the function may adjust the blend coefficients. After this function is called the src and dst
* blend coeffs will represent those used by backend API.
diff --git a/src/gpu/GrPrimitiveProcessor.h b/src/gpu/GrPrimitiveProcessor.h
index 8d6a70284e..f1af14de4e 100644
--- a/src/gpu/GrPrimitiveProcessor.h
+++ b/src/gpu/GrPrimitiveProcessor.h
@@ -56,9 +56,6 @@ enum GrPixelLocalStorageState {
*/
class GrPipelineOptimizations {
public:
- /** Does the pipeline require the GrPrimitiveProcessor's color? */
- bool readsColor() const { return SkToBool(kReadsColor_Flag & fFlags); }
-
/** Does the pipeline require access to (implicit or explicit) local coordinates? */
bool readsLocalCoords() const {
return SkToBool(kReadsLocalCoords_Flag & fFlags);
@@ -74,7 +71,6 @@ public:
so get the color)? */
bool getOverrideColorIfSet(GrColor* overrideColor) const {
if (SkToBool(kUseOverrideColor_Flag & fFlags)) {
- SkASSERT(SkToBool(kReadsColor_Flag & fFlags));
if (overrideColor) {
*overrideColor = fOverrideColor;
}
@@ -98,21 +94,18 @@ 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 local coordinates
- kReadsLocalCoords_Flag = 0x2,
+ kReadsLocalCoords_Flag = 0x1,
// 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 = 0x4,
+ kCanTweakAlphaForCoverage_Flag = 0x2,
// If this flag is set the GrPrimitiveProcessor must produce fOverrideColor as its
// output color. If not set fOverrideColor is to be ignored.
- kUseOverrideColor_Flag = 0x8,
+ kUseOverrideColor_Flag = 0x4,
- kWillColorBlendWithDst_Flag = 0x10,
+ kWillColorBlendWithDst_Flag = 0x8,
};
uint32_t fFlags;
diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp
index 8db60acec8..cb0e0c5a0c 100644
--- a/src/gpu/effects/GrBezierEffect.cpp
+++ b/src/gpu/effects/GrBezierEffect.cpp
@@ -84,9 +84,7 @@ void GrGLConicEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder;
// Setup pass through color
- if (!gp.colorIgnored()) {
- this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform);
- }
+ this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform);
// Setup position
this->setupPosition(vertBuilder,
@@ -222,7 +220,6 @@ void GrGLConicEffect::GenKey(const GrGeometryProcessor& gp,
GrProcessorKeyBuilder* b) {
const GrConicEffect& ce = gp.cast<GrConicEffect>();
uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
- key |= GrColor_ILLEGAL != ce.color() ? 0x4 : 0x0;
key |= 0xff != ce.coverageScale() ? 0x8 : 0x0;
key |= ce.usesLocalCoords() && ce.localMatrix().hasPerspective() ? 0x10 : 0x0;
key |= ComputePosKey(ce.viewMatrix()) << 5;
@@ -346,9 +343,7 @@ void GrGLQuadEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder;
// Setup pass through color
- if (!gp.colorIgnored()) {
- this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform);
- }
+ this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform);
// Setup position
this->setupPosition(vertBuilder,
@@ -426,7 +421,6 @@ void GrGLQuadEffect::GenKey(const GrGeometryProcessor& gp,
GrProcessorKeyBuilder* b) {
const GrQuadEffect& ce = gp.cast<GrQuadEffect>();
uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
- key |= ce.color() != GrColor_ILLEGAL ? 0x4 : 0x0;
key |= ce.coverageScale() != 0xff ? 0x8 : 0x0;
key |= ce.usesLocalCoords() && ce.localMatrix().hasPerspective() ? 0x10 : 0x0;
key |= ComputePosKey(ce.viewMatrix()) << 5;
@@ -656,7 +650,6 @@ void GrGLCubicEffect::GenKey(const GrGeometryProcessor& gp,
GrProcessorKeyBuilder* b) {
const GrCubicEffect& ce = gp.cast<GrCubicEffect>();
uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
- key |= ce.color() != GrColor_ILLEGAL ? 0x4 : 0x8;
key |= ComputePosKey(ce.viewMatrix()) << 5;
b->add32(key);
}
diff --git a/src/gpu/effects/GrBezierEffect.h b/src/gpu/effects/GrBezierEffect.h
index edb14080d4..824883c9e6 100644
--- a/src/gpu/effects/GrBezierEffect.h
+++ b/src/gpu/effects/GrBezierEffect.h
@@ -100,7 +100,6 @@ public:
inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType); }
inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
const SkMatrix& viewMatrix() const { return fViewMatrix; }
const SkMatrix& localMatrix() const { return fLocalMatrix; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
@@ -183,7 +182,6 @@ public:
inline bool isFilled() const { return GrProcessorEdgeTypeIsFill(fEdgeType); }
inline GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
const SkMatrix& viewMatrix() const { return fViewMatrix; }
const SkMatrix& localMatrix() const { return fLocalMatrix; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp
index 8be4c2951a..3c4566ea7c 100644
--- a/src/gpu/effects/GrBitmapTextGeoProc.cpp
+++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp
@@ -41,13 +41,11 @@ public:
GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder;
// Setup pass through color
- if (!cte.colorIgnored()) {
- if (cte.hasVertexColor()) {
- varyingHandler->addPassThroughAttribute(cte.inColor(), args.fOutputColor);
- } else {
- this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor,
- &fColorUniform);
- }
+ if (cte.hasVertexColor()) {
+ varyingHandler->addPassThroughAttribute(cte.inColor(), args.fOutputColor);
+ } else {
+ this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor,
+ &fColorUniform);
}
// Setup position
@@ -63,15 +61,13 @@ public:
args.fFPCoordTransformHandler);
if (cte.maskFormat() == kARGB_GrMaskFormat) {
- if (!cte.colorIgnored()) {
- fragBuilder->codeAppendf("%s = ", args.fOutputColor);
- fragBuilder->appendTextureLookupAndModulate(args.fOutputColor,
- args.fTexSamplers[0],
- v.fsIn(),
- kVec2f_GrSLType);
- fragBuilder->codeAppend(";");
- fragBuilder->codeAppendf("%s = vec4(1);", args.fOutputCoverage);
- }
+ fragBuilder->codeAppendf("%s = ", args.fOutputColor);
+ fragBuilder->appendTextureLookupAndModulate(args.fOutputColor,
+ args.fTexSamplers[0],
+ v.fsIn(),
+ kVec2f_GrSLType);
+ fragBuilder->codeAppend(";");
+ fragBuilder->codeAppendf("%s = vec4(1);", args.fOutputCoverage);
} else {
fragBuilder->codeAppendf("%s = ", args.fOutputCoverage);
fragBuilder->appendTextureLookup(args.fTexSamplers[0], v.fsIn(), kVec2f_GrSLType);
@@ -102,9 +98,8 @@ public:
GrProcessorKeyBuilder* b) {
const GrBitmapTextGeoProc& gp = proc.cast<GrBitmapTextGeoProc>();
uint32_t key = 0;
- key |= gp.usesLocalCoords() && gp.localMatrix().hasPerspective() ? 0x1 : 0x0;
- key |= gp.colorIgnored() ? 0x2 : 0x0;
- key |= gp.maskFormat() << 3;
+ key |= (gp.usesLocalCoords() && gp.localMatrix().hasPerspective()) ? 0x1 : 0x0;
+ key |= gp.maskFormat() << 1;
b->add32(key);
// Currently we hardcode numbers to convert atlas coordinates to normalized floating point
diff --git a/src/gpu/effects/GrBitmapTextGeoProc.h b/src/gpu/effects/GrBitmapTextGeoProc.h
index bf7f08febd..f15de47cf4 100644
--- a/src/gpu/effects/GrBitmapTextGeoProc.h
+++ b/src/gpu/effects/GrBitmapTextGeoProc.h
@@ -37,7 +37,6 @@ public:
const Attribute* inTextureCoords() const { return fInTextureCoords; }
GrMaskFormat maskFormat() const { return fMaskFormat; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
bool hasVertexColor() const { return SkToBool(fInColor); }
const SkMatrix& localMatrix() const { return fLocalMatrix; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.cpp b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
index 9d90ac9986..ee28760b11 100644
--- a/src/gpu/effects/GrDistanceFieldGeoProc.cpp
+++ b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
@@ -53,9 +53,7 @@ public:
#endif
// Setup pass through color
- if (!dfTexEffect.colorIgnored()) {
- varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args.fOutputColor);
- }
+ varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args.fOutputColor);
// Setup position
this->setupPosition(vertBuilder,
@@ -201,8 +199,7 @@ public:
GrProcessorKeyBuilder* b) {
const GrDistanceFieldA8TextGeoProc& dfTexEffect = gp.cast<GrDistanceFieldA8TextGeoProc>();
uint32_t key = dfTexEffect.getFlags();
- key |= dfTexEffect.colorIgnored() << 16;
- key |= ComputePosKey(dfTexEffect.viewMatrix()) << 25;
+ key |= ComputePosKey(dfTexEffect.viewMatrix()) << 16;
b->add32(key);
// Currently we hardcode numbers to convert atlas coordinates to normalized floating point
@@ -323,9 +320,7 @@ public:
varyingHandler->addVarying("TextureCoords", &v, kHigh_GrSLPrecision);
// setup pass through color
- if (!dfTexEffect.colorIgnored()) {
- varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args.fOutputColor);
- }
+ varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args.fOutputColor);
vertBuilder->codeAppendf("%s = %s;", v.vsOut(), dfTexEffect.inTextureCoords()->fName);
// Setup position
@@ -457,8 +452,7 @@ public:
const GrDistanceFieldPathGeoProc& dfTexEffect = gp.cast<GrDistanceFieldPathGeoProc>();
uint32_t key = dfTexEffect.getFlags();
- key |= dfTexEffect.colorIgnored() << 16;
- key |= ComputePosKey(dfTexEffect.viewMatrix()) << 25;
+ key |= ComputePosKey(dfTexEffect.viewMatrix()) << 16;
b->add32(key);
}
@@ -561,9 +555,7 @@ public:
GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder;
// setup pass through color
- if (!dfTexEffect.colorIgnored()) {
- varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args.fOutputColor);
- }
+ varyingHandler->addPassThroughAttribute(dfTexEffect.inColor(), args.fOutputColor);
// Setup position
this->setupPosition(vertBuilder,
@@ -752,8 +744,7 @@ public:
const GrDistanceFieldLCDTextGeoProc& dfTexEffect = gp.cast<GrDistanceFieldLCDTextGeoProc>();
uint32_t key = dfTexEffect.getFlags();
- key |= dfTexEffect.colorIgnored() << 16;
- key |= ComputePosKey(dfTexEffect.viewMatrix()) << 25;
+ key |= ComputePosKey(dfTexEffect.viewMatrix()) << 16;
b->add32(key);
// Currently we hardcode numbers to convert atlas coordinates to normalized floating point
diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.h b/src/gpu/effects/GrDistanceFieldGeoProc.h
index a0bfdd9dde..4355e8dd20 100644
--- a/src/gpu/effects/GrDistanceFieldGeoProc.h
+++ b/src/gpu/effects/GrDistanceFieldGeoProc.h
@@ -74,7 +74,6 @@ public:
const Attribute* inColor() const { return fInColor; }
const Attribute* inTextureCoords() const { return fInTextureCoords; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
const SkMatrix& viewMatrix() const { return fViewMatrix; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
#ifdef SK_GAMMA_APPLY_TO_A8
@@ -135,7 +134,6 @@ public:
const Attribute* inColor() const { return fInColor; }
const Attribute* inTextureCoords() const { return fInTextureCoords; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
const SkMatrix& viewMatrix() const { return fViewMatrix; }
uint32_t getFlags() const { return fFlags; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
@@ -204,7 +202,6 @@ public:
const Attribute* inTextureCoords() const { return fInTextureCoords; }
DistanceAdjust getDistanceAdjust() const { return fDistanceAdjust; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
const SkMatrix& viewMatrix() const { return fViewMatrix; }
uint32_t getFlags() const { return fFlags; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
diff --git a/src/gpu/effects/GrShadowGeoProc.h b/src/gpu/effects/GrShadowGeoProc.h
index dc6872e701..b0631efd9e 100755
--- a/src/gpu/effects/GrShadowGeoProc.h
+++ b/src/gpu/effects/GrShadowGeoProc.h
@@ -31,7 +31,6 @@ public:
const Attribute* inColor() const { return fInColor; }
const Attribute* inShadowParams() const { return fInShadowParams; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
const SkMatrix& localMatrix() const { return fLocalMatrix; }
void getGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override;
diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp
index 14106fec28..e260d27628 100644
--- a/src/gpu/ops/GrAAConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp
@@ -538,14 +538,12 @@ public:
const Attribute* inPosition() const { return fInPosition; }
const Attribute* inQuadEdge() const { return fInQuadEdge; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
const SkMatrix& localMatrix() const { return fLocalMatrix; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
class GLSLProcessor : public GrGLSLGeometryProcessor {
public:
- GLSLProcessor()
- : fColor(GrColor_ILLEGAL) {}
+ GLSLProcessor() : fColor(GrColor_ILLEGAL) {}
void onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) override {
const QuadEdgeEffect& qe = args.fGP.cast<QuadEdgeEffect>();
@@ -562,10 +560,8 @@ public:
GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder;
// Setup pass through color
- if (!qe.colorIgnored()) {
- this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor,
- &fColorUniform);
- }
+ this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor,
+ &fColorUniform);
// Setup position
this->setupPosition(vertBuilder, gpArgs, qe.inPosition()->fName);
@@ -604,10 +600,7 @@ public:
const GrShaderCaps&,
GrProcessorKeyBuilder* b) {
const QuadEdgeEffect& qee = gp.cast<QuadEdgeEffect>();
- uint32_t key = 0;
- key |= qee.usesLocalCoords() && qee.localMatrix().hasPerspective() ? 0x1 : 0x0;
- key |= qee.colorIgnored() ? 0x2 : 0x0;
- b->add32(key);
+ b->add32(SkToBool(qee.usesLocalCoords() && qee.localMatrix().hasPerspective()));
}
void setData(const GrGLSLProgramDataManager& pdman,
@@ -757,9 +750,6 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fColor);
fUsesLocalCoords = optimizations.readsLocalCoords();
diff --git a/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp b/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp
index fc141f732c..4da6763407 100644
--- a/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp
+++ b/src/gpu/ops/GrAADistanceFieldPathRenderer.cpp
@@ -170,12 +170,7 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fShapes[0].fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fShapes[0].fColor);
-
- fColorIgnored = !optimizations.readsColor();
fUsesLocalCoords = optimizations.readsLocalCoords();
}
@@ -486,7 +481,6 @@ private:
SkMatrix fViewMatrix;
bool fUsesLocalCoords;
- bool fColorIgnored;
struct Entry {
GrColor fColor;
diff --git a/src/gpu/ops/GrAAHairLinePathRenderer.cpp b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
index c8533cbd2e..29ad4ec305 100644
--- a/src/gpu/ops/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
@@ -723,9 +723,6 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fColor);
fUsesLocalCoords = optimizations.readsLocalCoords();
}
diff --git a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
index 03e5ce3522..74f355ee33 100644
--- a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
@@ -178,12 +178,7 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fPaths[0].fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fPaths[0].fColor);
-
- fColor = fPaths[0].fColor;
fUsesLocalCoords = optimizations.readsLocalCoords();
fCanTweakAlphaForCoverage = optimizations.canTweakAlphaForCoverage();
}
@@ -304,7 +299,6 @@ private:
return true;
}
- GrColor color() const { return fColor; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
bool canTweakAlphaForCoverage() const { return fCanTweakAlphaForCoverage; }
const SkMatrix& viewMatrix() const { return fPaths[0].fViewMatrix; }
@@ -319,7 +313,6 @@ private:
SkScalar fMiterLimit;
};
- GrColor fColor;
bool fUsesLocalCoords;
bool fCanTweakAlphaForCoverage;
SkSTArray<1, PathData, true> fPaths;
diff --git a/src/gpu/ops/GrAAStrokeRectOp.cpp b/src/gpu/ops/GrAAStrokeRectOp.cpp
index 3c603bb228..8a5fec1f45 100644
--- a/src/gpu/ops/GrAAStrokeRectOp.cpp
+++ b/src/gpu/ops/GrAAStrokeRectOp.cpp
@@ -220,9 +220,6 @@ private:
};
void AAStrokeRectOp::applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) {
- if (!optimizations.readsColor()) {
- fRects[0].fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fRects[0].fColor);
fUsesLocalCoords = optimizations.readsLocalCoords();
diff --git a/src/gpu/ops/GrAtlasTextOp.cpp b/src/gpu/ops/GrAtlasTextOp.cpp
index 8705bac411..dd17ad6736 100644
--- a/src/gpu/ops/GrAtlasTextOp.cpp
+++ b/src/gpu/ops/GrAtlasTextOp.cpp
@@ -67,12 +67,8 @@ void GrAtlasTextOp::getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* inpu
}
void GrAtlasTextOp::applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) {
- if (!optimizations.readsColor()) {
- fGeoData[0].fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fGeoData[0].fColor);
- fColorIgnored = !optimizations.readsColor();
fColor = fGeoData[0].fColor;
fUsesLocalCoords = optimizations.readsLocalCoords();
}
diff --git a/src/gpu/ops/GrAtlasTextOp.h b/src/gpu/ops/GrAtlasTextOp.h
index 781e580515..2a8c30b352 100644
--- a/src/gpu/ops/GrAtlasTextOp.h
+++ b/src/gpu/ops/GrAtlasTextOp.h
@@ -153,7 +153,6 @@ private:
GrColor fColor;
bool fUsesLocalCoords;
- bool fColorIgnored;
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 caeff3d69f..d4be853100 100644
--- a/src/gpu/ops/GrDashOp.cpp
+++ b/src/gpu/ops/GrDashOp.cpp
@@ -303,9 +303,6 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fColor);
fUsesLocalCoords = optimizations.readsLocalCoords();
@@ -772,8 +769,6 @@ public:
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
-
const SkMatrix& localMatrix() const { return fLocalMatrix; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
@@ -851,9 +846,7 @@ void GLDashingCircleEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder;
// Setup pass through color
- if (!dce.colorIgnored()) {
- this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform);
- }
+ this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform);
// Setup position
this->setupPosition(vertBuilder, gpArgs, dce.inPosition()->fName);
@@ -904,8 +897,7 @@ void GLDashingCircleEffect::GenKey(const GrGeometryProcessor& gp,
const DashingCircleEffect& dce = gp.cast<DashingCircleEffect>();
uint32_t key = 0;
key |= dce.usesLocalCoords() && dce.localMatrix().hasPerspective() ? 0x1 : 0x0;
- key |= dce.colorIgnored() ? 0x2 : 0x0;
- key |= static_cast<uint32_t>(dce.aaMode()) << 8;
+ key |= static_cast<uint32_t>(dce.aaMode()) << 1;
b->add32(key);
}
@@ -985,9 +977,7 @@ public:
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
-
- const SkMatrix& localMatrix() const { return fLocalMatrix; }
+ const SkMatrix& localMatrix() const { return fLocalMatrix; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
@@ -1033,9 +1023,7 @@ private:
typedef GrGLSLGeometryProcessor INHERITED;
};
-GLDashingLineEffect::GLDashingLineEffect() {
- fColor = GrColor_ILLEGAL;
-}
+GLDashingLineEffect::GLDashingLineEffect() : fColor(GrColor_ILLEGAL) {}
void GLDashingLineEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>();
@@ -1060,9 +1048,7 @@ void GLDashingLineEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
GrGLSLPPFragmentBuilder* fragBuilder = args.fFragBuilder;
// Setup pass through color
- if (!de.colorIgnored()) {
- this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform);
- }
+ this->setupUniformColor(fragBuilder, uniformHandler, args.fOutputColor, &fColorUniform);
// Setup position
this->setupPosition(vertBuilder, gpArgs, de.inPosition()->fName);
@@ -1131,7 +1117,6 @@ void GLDashingLineEffect::GenKey(const GrGeometryProcessor& gp,
const DashingLineEffect& de = gp.cast<DashingLineEffect>();
uint32_t key = 0;
key |= de.usesLocalCoords() && de.localMatrix().hasPerspective() ? 0x1 : 0x0;
- key |= de.colorIgnored() ? 0x2 : 0x0;
key |= static_cast<int>(de.aaMode()) << 8;
b->add32(key);
}
diff --git a/src/gpu/ops/GrDefaultPathRenderer.cpp b/src/gpu/ops/GrDefaultPathRenderer.cpp
index 2b2501e20b..d9e0110c06 100644
--- a/src/gpu/ops/GrDefaultPathRenderer.cpp
+++ b/src/gpu/ops/GrDefaultPathRenderer.cpp
@@ -138,9 +138,6 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fColor);
fUsesLocalCoords = optimizations.readsLocalCoords();
}
diff --git a/src/gpu/ops/GrDrawAtlasOp.cpp b/src/gpu/ops/GrDrawAtlasOp.cpp
index 2c8e34bdce..c9dffe6e34 100644
--- a/src/gpu/ops/GrDrawAtlasOp.cpp
+++ b/src/gpu/ops/GrDrawAtlasOp.cpp
@@ -14,9 +14,6 @@
void GrDrawAtlasOp::applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) {
SkASSERT(fGeoData.count() == 1);
- if (!optimizations.readsColor()) {
- fGeoData[0].fColor = GrColor_ILLEGAL;
- }
if (optimizations.getOverrideColorIfSet(&fGeoData[0].fColor) && fHasColors) {
size_t vertexStride =
sizeof(SkPoint) + sizeof(SkPoint) + (this->hasColors() ? sizeof(GrColor) : 0);
@@ -27,7 +24,6 @@ void GrDrawAtlasOp::applyPipelineOptimizations(const GrPipelineOptimizations& op
}
}
- fColorIgnored = !optimizations.readsColor();
fColor = fGeoData[0].fColor;
// We'd like to assert this, but we can't because of GLPrograms test
// SkASSERT(init.readsLocalCoords());
@@ -176,9 +172,6 @@ bool GrDrawAtlasOp::onCombineIfPossible(GrOp* t, const GrCaps& caps) {
return false;
}
- if (this->color() != that->color()) {
- fColor = GrColor_ILLEGAL;
- }
fGeoData.push_back_n(that->fGeoData.count(), that->fGeoData.begin());
fQuadCount += that->quadCount();
diff --git a/src/gpu/ops/GrDrawAtlasOp.h b/src/gpu/ops/GrDrawAtlasOp.h
index 8251386eab..8184ecb81b 100644
--- a/src/gpu/ops/GrDrawAtlasOp.h
+++ b/src/gpu/ops/GrDrawAtlasOp.h
@@ -53,7 +53,6 @@ private:
void applyPipelineOptimizations(const GrPipelineOptimizations&) override;
GrColor color() const { return fColor; }
- bool colorIgnored() const { return fColorIgnored; }
const SkMatrix& viewMatrix() const { return fViewMatrix; }
bool hasColors() const { return fHasColors; }
int quadCount() const { return fQuadCount; }
@@ -70,7 +69,6 @@ private:
SkMatrix fViewMatrix;
GrColor fColor;
int fQuadCount;
- bool fColorIgnored;
bool fHasColors;
typedef GrMeshDrawOp INHERITED;
diff --git a/src/gpu/ops/GrMSAAPathRenderer.cpp b/src/gpu/ops/GrMSAAPathRenderer.cpp
index a45e6fad15..207567beff 100644
--- a/src/gpu/ops/GrMSAAPathRenderer.cpp
+++ b/src/gpu/ops/GrMSAAPathRenderer.cpp
@@ -264,9 +264,6 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fPaths[0].fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fPaths[0].fColor);
}
diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp
index 51db03542c..f693169b47 100644
--- a/src/gpu/ops/GrOvalOpFactory.cpp
+++ b/src/gpu/ops/GrOvalOpFactory.cpp
@@ -1251,9 +1251,6 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fGeoData[0].fColor = GrColor_ILLEGAL;
- }
if (!optimizations.readsLocalCoords()) {
fViewMatrixIfUsingLocalCoords.reset();
}
diff --git a/src/gpu/ops/GrPLSPathRenderer.cpp b/src/gpu/ops/GrPLSPathRenderer.cpp
index 637b4b7c09..0e70634023 100644
--- a/src/gpu/ops/GrPLSPathRenderer.cpp
+++ b/src/gpu/ops/GrPLSPathRenderer.cpp
@@ -634,7 +634,6 @@ public:
const Attribute* inPosition() const { return fInPosition; }
GrColor color() const { return fColor; }
- bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
const SkMatrix& localMatrix() const { return fLocalMatrix; }
bool usesLocalCoords() const { return fUsesLocalCoords; }
@@ -683,10 +682,8 @@ public:
fsBuilder->codeAppend("coverage += pls.windings[2] != 0 ? 0.25 : 0.0;");
fsBuilder->codeAppend("coverage += pls.windings[3] != 0 ? 0.25 : 0.0;");
fsBuilder->codeAppend("}");
- if (!fe.colorIgnored()) {
- this->setupUniformColor(fsBuilder, uniformHandler, args.fOutputColor,
- &fColorUniform);
- }
+ this->setupUniformColor(fsBuilder, uniformHandler, args.fOutputColor,
+ &fColorUniform);
fsBuilder->codeAppendf("%s = vec4(coverage);", args.fOutputCoverage);
fsBuilder->codeAppendf("%s = vec4(1.0, 0.0, 1.0, 1.0);", args.fOutputColor);
}
@@ -704,7 +701,7 @@ public:
FPCoordTransformIter&& transformIter) override {
const PLSFinishEffect& fe = gp.cast<PLSFinishEffect>();
pdman.set1f(fUseEvenOdd, fe.fUseEvenOdd);
- if (fe.color() != fColor && !fe.colorIgnored()) {
+ if (fe.color() != fColor) {
GrGLfloat c[4];
GrColorToRGBAFloat(fe.color(), c);
pdman.set4fv(fColorUniform, 1, c);
@@ -796,9 +793,6 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fColor);
fUsesLocalCoords = optimizations.readsLocalCoords();
diff --git a/src/gpu/ops/GrTessellatingPathRenderer.cpp b/src/gpu/ops/GrTessellatingPathRenderer.cpp
index afd953e917..183ab31aac 100644
--- a/src/gpu/ops/GrTessellatingPathRenderer.cpp
+++ b/src/gpu/ops/GrTessellatingPathRenderer.cpp
@@ -186,9 +186,6 @@ private:
}
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
- if (!optimizations.readsColor()) {
- fColor = GrColor_ILLEGAL;
- }
optimizations.getOverrideColorIfSet(&fColor);
fOptimizations = optimizations;
}
diff --git a/src/gpu/ops/GrTestMeshDrawOp.h b/src/gpu/ops/GrTestMeshDrawOp.h
index 8d5a896d81..b8143a5aa7 100644
--- a/src/gpu/ops/GrTestMeshDrawOp.h
+++ b/src/gpu/ops/GrTestMeshDrawOp.h
@@ -30,12 +30,7 @@ protected:
GrColor color() const { return fColor; }
- struct Optimizations {
- bool fColorIgnored = false;
- bool fUsesLocalCoords = false;
- };
-
- const Optimizations optimizations() const { return fOptimizations; }
+ bool usesLocalCoords() const { return fUsesLocalCoords; }
private:
void getPipelineAnalysisInput(GrPipelineAnalysisDrawOpInput* input) const override {
@@ -45,15 +40,13 @@ private:
void applyPipelineOptimizations(const GrPipelineOptimizations& optimizations) override {
optimizations.getOverrideColorIfSet(&fColor);
-
- fOptimizations.fColorIgnored = !optimizations.readsColor();
- fOptimizations.fUsesLocalCoords = optimizations.readsLocalCoords();
+ fUsesLocalCoords = optimizations.readsLocalCoords();
}
bool onCombineIfPossible(GrOp*, const GrCaps&) override { return false; }
- GrColor fColor;
- Optimizations fOptimizations;
+ GrColor fColor;
+ bool fUsesLocalCoords = false;
typedef GrMeshDrawOp INHERITED;
};