Index: src/gpu/GrDrawState.h |
diff --git a/src/gpu/GrDrawState.h b/src/gpu/GrDrawState.h |
index 17bd0f43df8fe0e6ab80a57871420b001d9debfa..8d7ec9891e75c12f18ad7c64e5a362e967426bbd 100644 |
--- a/src/gpu/GrDrawState.h |
+++ b/src/gpu/GrDrawState.h |
@@ -68,21 +68,6 @@ public: |
*/ |
void setFromPaint(const GrPaint& , const SkMatrix& viewMatrix, GrRenderTarget*); |
- /////////////////////////////////////////////////////////////////////////// |
- /// @name Vertex Attributes |
- //// |
- |
- // TODO when we move this info off of GrGeometryProcessor, delete these |
- bool hasLocalCoordAttribute() const { |
- return this->hasGeometryProcessor() && this->getGeometryProcessor()->hasLocalCoords(); |
- } |
- bool hasColorVertexAttribute() const { |
- return this->hasGeometryProcessor() && this->getGeometryProcessor()->hasVertexColor(); |
- } |
- bool hasCoverageVertexAttribute() const { |
- return this->hasGeometryProcessor() && this->getGeometryProcessor()->hasVertexCoverage(); |
- } |
- |
/// @} |
/** |
@@ -100,29 +85,13 @@ public: |
/** |
* Determines whether the output coverage is guaranteed to be one for all pixels hit by a draw. |
*/ |
- bool hasSolidCoverage(GrColor coverage) const; |
+ bool hasSolidCoverage(const GrPrimitiveProcessor*) const; |
/** |
* This function returns true if the render target destination pixel values will be read for |
* blending during draw. |
*/ |
- bool willBlendWithDst(GrColor color, GrColor coverage) const; |
- |
- /// @} |
- |
- /** |
- * The geometry processor is the sole element of the skia pipeline which can use the vertex, |
- * geometry, and tesselation shaders. The GP may also compute a coverage in its fragment shader |
- * but is never put in the color processing pipeline. |
- */ |
- |
- const GrGeometryProcessor* setGeometryProcessor(const GrGeometryProcessor* geometryProcessor) { |
- SkASSERT(geometryProcessor); |
- SkASSERT(!this->hasGeometryProcessor()); |
- fGeometryProcessor.reset(SkRef(geometryProcessor)); |
- fCoverageProcInfoValid = false; |
- return geometryProcessor; |
- } |
+ bool willBlendWithDst(const GrPrimitiveProcessor*) const; |
/////////////////////////////////////////////////////////////////////////// |
/// @name Effect Stages |
@@ -147,12 +116,6 @@ public: |
int numColorStages() const { return fColorStages.count(); } |
int numCoverageStages() const { return fCoverageStages.count(); } |
int numFragmentStages() const { return this->numColorStages() + this->numCoverageStages(); } |
- int numTotalStages() const { |
- return this->numFragmentStages() + (this->hasGeometryProcessor() ? 1 : 0); |
- } |
- |
- bool hasGeometryProcessor() const { return SkToBool(fGeometryProcessor.get()); } |
- const GrGeometryProcessor* getGeometryProcessor() const { return fGeometryProcessor.get(); } |
const GrXPFactory* getXPFactory() const { return fXPFactory.get(); } |
@@ -163,7 +126,7 @@ public: |
* Checks whether any of the effects will read the dst pixel color. |
* TODO remove when we have an XP |
*/ |
- bool willEffectReadDstColor(GrColor color, GrColor coverage) const; |
+ bool willEffectReadDstColor(const GrPrimitiveProcessor*) const; |
/** |
* The xfer processor factory. |
@@ -238,13 +201,11 @@ public: |
public: |
AutoRestoreEffects() |
: fDrawState(NULL) |
- , fOriginalGPID(SK_InvalidUniqueID) |
, fColorEffectCnt(0) |
, fCoverageEffectCnt(0) {} |
AutoRestoreEffects(GrDrawState* ds) |
: fDrawState(NULL) |
- , fOriginalGPID(SK_InvalidUniqueID) |
, fColorEffectCnt(0) |
, fCoverageEffectCnt(0) { |
this->set(ds); |
@@ -258,7 +219,6 @@ public: |
private: |
GrDrawState* fDrawState; |
- uint32_t fOriginalGPID; |
int fColorEffectCnt; |
int fCoverageEffectCnt; |
}; |
@@ -535,42 +495,33 @@ public: |
/// @} |
/////////////////////////////////////////////////////////////////////////// |
- /// @name Hints |
- /// Hints that when provided can enable optimizations. |
- //// |
- |
- enum Hints { |
- kVertexColorsAreOpaque_Hint = 0x1, |
- kLast_Hint = kVertexColorsAreOpaque_Hint |
- }; |
- |
- void setHint(Hints hint, bool value) { fHints = value ? (fHints | hint) : (fHints & ~hint); } |
- |
- bool vertexColorsAreOpaque() const { return kVertexColorsAreOpaque_Hint & fHints; } |
- |
- /// @} |
- |
- /////////////////////////////////////////////////////////////////////////// |
GrDrawState& operator= (const GrDrawState& that); |
private: |
- bool isEqual(const GrDrawState& that) const; |
+ bool isEqual(const GrDrawState& that, bool explicitLocalCoords) const; |
- const GrProcOptInfo& colorProcInfo(GrColor color) const { |
- this->calcColorInvariantOutput(color); |
+ const GrProcOptInfo& colorProcInfo(const GrPrimitiveProcessor* pp) const { |
+ this->calcColorInvariantOutput(pp); |
return fColorProcInfo; |
} |
- const GrProcOptInfo& coverageProcInfo(GrColor coverage) const { |
- this->calcCoverageInvariantOutput(coverage); |
+ const GrProcOptInfo& coverageProcInfo(const GrPrimitiveProcessor* pp) const { |
+ this->calcCoverageInvariantOutput(pp); |
return fCoverageProcInfo; |
} |
/** |
- * Determines whether src alpha is guaranteed to be one for all src pixels |
+ * If fColorProcInfoValid is false, function calculates the invariant output for the color |
+ * stages and results are stored in fColorProcInfo. |
+ */ |
+ void calcColorInvariantOutput(const GrPrimitiveProcessor*) const; |
+ |
+ /** |
+ * If fCoverageProcInfoValid is false, function calculates the invariant output for the coverage |
+ * stages and results are stored in fCoverageProcInfo. |
*/ |
- bool srcAlphaWillBeOne(GrColor color, GrColor coverage) const; |
+ void calcCoverageInvariantOutput(const GrPrimitiveProcessor*) const; |
/** |
* If fColorProcInfoValid is false, function calculates the invariant output for the color |
@@ -597,11 +548,9 @@ private: |
uint32_t fFlagBits; |
GrStencilSettings fStencilSettings; |
DrawFace fDrawFace; |
- SkAutoTUnref<const GrGeometryProcessor> fGeometryProcessor; |
SkAutoTUnref<const GrXPFactory> fXPFactory; |
FragmentStageArray fColorStages; |
FragmentStageArray fCoverageStages; |
- uint32_t fHints; |
mutable GrProcOptInfo fColorProcInfo; |
mutable GrProcOptInfo fCoverageProcInfo; |
@@ -609,6 +558,8 @@ private: |
mutable bool fCoverageProcInfoValid; |
mutable GrColor fColorCache; |
mutable GrColor fCoverageCache; |
+ mutable const GrPrimitiveProcessor* fColorPrimProc; |
+ mutable const GrPrimitiveProcessor* fCoveragePrimProc; |
friend class GrOptDrawState; |
}; |