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