Index: src/gpu/GrGpu.h |
diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h |
index 239ae6bd8362d3dbd25a7ca8b76027f8169afb6f..01e097126f37b484aaa7346982383cc64b586d73 100644 |
--- a/src/gpu/GrGpu.h |
+++ b/src/gpu/GrGpu.h |
@@ -335,12 +335,17 @@ public: |
// clipping. |
}; |
+ void setStencilPathSettings(const GrStencilSettings& settings) { |
+ fStencilPathSettings = settings; |
+ } |
+ |
protected: |
enum DrawType { |
kDrawPoints_DrawType, |
kDrawLines_DrawType, |
kDrawTriangles_DrawType, |
kStencilPath_DrawType, |
+ kDrawPath_DrawType, |
}; |
DrawType PrimTypeToDrawType(GrPrimitiveType type) { |
@@ -397,6 +402,7 @@ protected: |
// The final stencil settings to use as determined by the clip manager. |
GrStencilSettings fStencilSettings; |
+ GrStencilSettings fStencilPathSettings; |
// Derived classes need access to this so they can fill it out in their |
// constructors |
@@ -440,15 +446,12 @@ private: |
// overridden by backend-specific derived class to perform the draw call. |
virtual void onGpuDraw(const DrawInfo&) = 0; |
- // when GrDrawTarget::stencilPath is called the draw state's current stencil |
- // settings are ignored. Instead the GrGpu decides the stencil rules |
- // necessary to stencil the path. These are still subject to filtering by |
- // the clip mask manager. |
- virtual void setStencilPathSettings(const GrPath&, |
- SkPath::FillType, |
- GrStencilSettings* settings) = 0; |
+ |
// overridden by backend-specific derived class to perform the path stenciling. |
+ virtual const GrStencilSettings& getStencilPathSettings(const GrPath&, |
+ SkPath::FillType) = 0; |
virtual void onGpuStencilPath(const GrPath*, SkPath::FillType) = 0; |
+ virtual void onGpuDrawPath(const GrPath*, SkPath::FillType) = 0; |
// overridden by backend-specific derived class to perform flush |
virtual void onForceRenderTargetFlush() = 0; |
@@ -494,6 +497,9 @@ private: |
virtual void onStencilPath(const GrPath* path, const SkStrokeRec& stroke, |
SkPath::FillType) SK_OVERRIDE; |
+ virtual void onDrawPath(const GrPath* path, const SkStrokeRec& stroke, |
+ SkPath::FillType) SK_OVERRIDE; |
+ |
// readies the pools to provide vertex/index data. |
void prepareVertexPool(); |
void prepareIndexPool(); |