Index: src/gpu/GrClipMaskManager.h |
diff --git a/src/gpu/GrClipMaskManager.h b/src/gpu/GrClipMaskManager.h |
index f7f7e5c0e1e18f68fbef53fb1f0584b3ed538da8..0c71f7c384d0249dc10c5c420c346cb59e09810b 100644 |
--- a/src/gpu/GrClipMaskManager.h |
+++ b/src/gpu/GrClipMaskManager.h |
@@ -14,7 +14,8 @@ |
class GrAppliedClip; |
class GrClipStackClip; |
-class GrDrawTarget; |
+class GrDrawContext; |
+class GrFixedClip; |
class GrPathRenderer; |
class GrPathRendererChain; |
class GrResourceProvider; |
@@ -29,54 +30,42 @@ class GrTextureProvider; |
* mask can be represented as a rectangle then scissoring is used. In all |
* cases scissoring is used to bound the range of the clip mask. |
*/ |
-class GrClipMaskManager : SkNoncopyable { |
+// This has to remain a class, for now, so it can be friended (by GrDrawContext & GrContext) |
+class GrClipMaskManager { |
public: |
- GrClipMaskManager(GrDrawTarget* owner) : fDrawTarget(owner) {} |
- |
/** |
* Creates a clip mask if necessary as a stencil buffer or alpha texture |
* and sets the GrGpu's scissor and stencil state. If the return is false |
* then the draw can be skipped. devBounds is optional but can help optimize |
* clipping. |
*/ |
- bool setupClipping(const GrPipelineBuilder&, const GrClipStackClip&, const SkRect* devBounds, |
- GrAppliedClip*); |
+ static bool SetupClipping(GrContext*, const GrPipelineBuilder&, GrDrawContext*, |
+ const GrClipStackClip&, const SkRect* devBounds, GrAppliedClip*); |
private: |
- inline GrContext* getContext(); |
- inline const GrCaps* caps() const; |
- inline GrResourceProvider* resourceProvider(); |
+ static void DrawNonAARect(GrDrawContext* drawContext, |
+ const GrFixedClip& clip, |
+ const SkMatrix& viewMatrix, |
+ const SkRect& rect, |
+ bool isAA, |
+ const GrUserStencilSettings* stencilSettings); |
static bool PathNeedsSWRenderer(GrContext* context, |
bool hasUserStencilSettings, |
- const GrRenderTarget* rt, |
+ const GrDrawContext*, |
const SkMatrix& viewMatrix, |
const SkClipStack::Element* element, |
GrPathRenderer** prOut, |
bool needsStencil); |
- static GrPathRenderer* GetPathRenderer(GrContext* context, |
- GrTexture* texture, |
- const SkMatrix& viewMatrix, |
- const SkClipStack::Element* element); |
- |
- // Attempts to install a series of coverage effects to implement the clip. Return indicates |
- // whether the element list was successfully converted to processors. *fp may be nullptr even |
- // when the function succeeds because all the elements were ignored. TODO: Make clip reduction |
- // bounds-aware and stop checking bounds in this function. Similarly, we shouldn't need to pass |
- // abortIfAA, but we don't yet know if all the AA elements will be eliminated. |
- bool getAnalyticClipProcessor(const GrReducedClip::ElementList&, |
- bool abortIfAA, |
- SkVector& clipOffset, |
- const SkRect* devBounds, |
- sk_sp<const GrFragmentProcessor>* fp); |
// Draws the clip into the stencil buffer |
- bool createStencilClipMask(GrRenderTarget*, |
- int32_t elementsGenID, |
- GrReducedClip::InitialState initialState, |
- const GrReducedClip::ElementList& elements, |
- const SkIRect& clipSpaceIBounds, |
- const SkIPoint& clipSpaceToStencilOffset); |
+ static bool CreateStencilClipMask(GrContext*, |
+ GrDrawContext*, |
+ int32_t elementsGenID, |
+ GrReducedClip::InitialState initialState, |
+ const GrReducedClip::ElementList& elements, |
+ const SkIRect& clipSpaceIBounds, |
+ const SkIPoint& clipSpaceToStencilOffset); |
// Creates an alpha mask of the clip. The mask is a rasterization of elements through the |
// rect specified by clipSpaceIBounds. |
@@ -97,16 +86,12 @@ private: |
static bool UseSWOnlyPath(GrContext*, |
const GrPipelineBuilder&, |
- const GrRenderTarget* rt, |
+ const GrDrawContext*, |
const SkVector& clipToMaskOffset, |
const GrReducedClip::ElementList& elements); |
- GrTexture* createCachedMask(int width, int height, const GrUniqueKey& key, bool renderTarget); |
- |
- static const int kMaxAnalyticElements = 4; |
- |
- GrDrawTarget* fDrawTarget; // This is our owning draw target. |
- |
- typedef SkNoncopyable INHERITED; |
+ static GrTexture* CreateCachedMask(int width, int height, const GrUniqueKey& key, |
+ bool renderTarget); |
}; |
+ |
#endif // GrClipMaskManager_DEFINED |