| Index: src/gpu/GrClipMaskManager.h
|
| diff --git a/src/gpu/GrClipMaskManager.h b/src/gpu/GrClipMaskManager.h
|
| index 0c0c10cf30a6eceacf595925e6c4ec6c1d0d4838..5c336e0596df7ed57bea403c7d60a1a0cd66a872 100644
|
| --- a/src/gpu/GrClipMaskManager.h
|
| +++ b/src/gpu/GrClipMaskManager.h
|
| @@ -23,6 +23,25 @@ class GrPathRenderer;
|
| class GrPathRendererChain;
|
| class GrTexture;
|
| class SkPath;
|
| +
|
| +/**
|
| + * Produced by GrClipMaskManager. It provides a set of modifications to the drawing state that
|
| + * are used to create the final GrPipeline for a GrBatch. This is a work in progress. It will
|
| + * eventually encapsulate all mechanisms for modifying the scissor, shaders, and stencil state
|
| + * to implement clipping.
|
| + */
|
| +class GrAppliedClip : public SkNoncopyable {
|
| +public:
|
| + GrAppliedClip() {}
|
| + const GrFragmentProcessor* clipCoverageFragmentProcessor() const { return fClipCoverageFP; }
|
| +
|
| +private:
|
| + SkAutoTUnref<const GrFragmentProcessor> fClipCoverageFP;
|
| + friend class GrClipMaskManager;
|
| +
|
| + typedef SkNoncopyable INHERITED;
|
| +};
|
| +
|
| /**
|
| * The clip mask creator handles the generation of the clip mask. If anti
|
| * aliasing is requested it will (in the future) generate a single channel
|
| @@ -43,10 +62,10 @@ public:
|
| * clip. devBounds is optional but can help optimize clipping.
|
| */
|
| bool setupClipping(const GrPipelineBuilder&,
|
| - GrPipelineBuilder::AutoRestoreFragmentProcessorState*,
|
| GrPipelineBuilder::AutoRestoreStencil*,
|
| GrScissorState*,
|
| - const SkRect* devBounds);
|
| + const SkRect* devBounds,
|
| + GrAppliedClip*);
|
|
|
| bool isClipInStencil() const {
|
| return kStencil_ClipMaskType == fCurrClipMaskType;
|
| @@ -77,11 +96,9 @@ private:
|
|
|
| // Attempts to install a series of coverage effects to implement the clip. Return indicates
|
| // whether the element list was successfully converted to effects.
|
| - bool installClipEffects(const GrPipelineBuilder&,
|
| - GrPipelineBuilder::AutoRestoreFragmentProcessorState*,
|
| - const GrReducedClip::ElementList&,
|
| - const SkVector& clipOffset,
|
| - const SkRect* devBounds);
|
| + const GrFragmentProcessor* getAnalyticClipProcessor(const GrReducedClip::ElementList&,
|
| + const SkVector& clipOffset,
|
| + const SkRect* devBounds);
|
|
|
| // Draws the clip into the stencil buffer
|
| bool createStencilClipMask(GrRenderTarget*,
|
| @@ -164,6 +181,8 @@ private:
|
| kAlpha_ClipMaskType,
|
| } fCurrClipMaskType;
|
|
|
| + static const int kMaxAnalyticElements = 4;
|
| +
|
| GrDrawTarget* fDrawTarget; // This is our owning draw target.
|
| StencilClipMode fClipMode;
|
|
|
|
|