| Index: src/gpu/GrDrawState.h
|
| diff --git a/src/gpu/GrDrawState.h b/src/gpu/GrDrawState.h
|
| index 00bec9f7c24f45e9088440bd6cdd1614e1d8764d..a1b07de6d6cdb04331e044ec6444939a8016e10a 100644
|
| --- a/src/gpu/GrDrawState.h
|
| +++ b/src/gpu/GrDrawState.h
|
| @@ -165,6 +165,20 @@ public:
|
|
|
| /// @}
|
|
|
| + /**
|
| + * 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 GrEffect* setGeometryProcessor(const GrEffect* effect, int attr0 = -1, int attr1 = -1) {
|
| + SkASSERT(NULL != effect);
|
| + SkASSERT(!this->hasGeometryProcessor());
|
| + fGeometryProcessor.reset(new GrEffectStage(effect, attr0, attr1));
|
| + this->invalidateBlendOptFlags();
|
| + return effect;
|
| + }
|
| +
|
| ///////////////////////////////////////////////////////////////////////////
|
| /// @name Effect Stages
|
| /// Each stage hosts a GrEffect. The effect produces an output color or coverage in the fragment
|
| @@ -242,6 +256,7 @@ public:
|
|
|
| private:
|
| GrDrawState* fDrawState;
|
| + SkAutoTDelete<GrEffectStage> fGeometryProcessor;
|
| int fColorEffectCnt;
|
| int fCoverageEffectCnt;
|
| };
|
| @@ -364,6 +379,7 @@ public:
|
| GrDrawState* fDrawState;
|
| SkMatrix fViewMatrix;
|
| int fNumColorStages;
|
| + bool fHasGeometryProcessor;
|
| SkAutoSTArray<8, GrEffectStage::SavedCoordChange> fSavedCoordChanges;
|
| };
|
|
|
|
|