diff options
author | Brian Salomon <bsalomon@google.com> | 2017-08-01 11:09:09 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-08-01 17:13:08 +0000 |
commit | 8514ebfb19c9c50e588283541133125b5aa8a05b (patch) | |
tree | f296931accc80264d7a8439f5418b22a49595149 /src | |
parent | e779ab17b6939e8fc709332399234fc25f1aa788 (diff) |
Allow RegionOp to be used for stenciling
Change-Id: I03473573bfe3da1a2d0fff40205094f7ba9e13af
Reviewed-on: https://skia-review.googlesource.com/29320
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/ops/GrRegionOp.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/gpu/ops/GrRegionOp.cpp b/src/gpu/ops/GrRegionOp.cpp index b385d2c58c..f059ac76d7 100644 --- a/src/gpu/ops/GrRegionOp.cpp +++ b/src/gpu/ops/GrRegionOp.cpp @@ -52,19 +52,23 @@ namespace { class RegionOp final : public GrMeshDrawOp { private: - using Helper = GrSimpleMeshDrawOpHelper; + using Helper = GrSimpleMeshDrawOpHelperWithStencil; public: DEFINE_OP_CLASS_ID static std::unique_ptr<GrDrawOp> Make(GrPaint&& paint, const SkMatrix& viewMatrix, - const SkRegion& region, GrAAType aaType) { - return Helper::FactoryHelper<RegionOp>(std::move(paint), viewMatrix, region, aaType); + const SkRegion& region, GrAAType aaType, + const GrUserStencilSettings* stencilSettings = nullptr) { + return Helper::FactoryHelper<RegionOp>(std::move(paint), viewMatrix, region, aaType, + stencilSettings); } RegionOp(const Helper::MakeArgs& helperArgs, GrColor color, const SkMatrix& viewMatrix, - const SkRegion& region, GrAAType aaType) - : INHERITED(ClassID()), fHelper(helperArgs, aaType), fViewMatrix(viewMatrix) { + const SkRegion& region, GrAAType aaType, const GrUserStencilSettings* stencilSettings) + : INHERITED(ClassID()) + , fHelper(helperArgs, aaType, stencilSettings) + , fViewMatrix(viewMatrix) { RegionInfo& info = fRegions.push_back(); info.fColor = color; info.fRegion = region; @@ -200,7 +204,8 @@ GR_DRAW_OP_TEST_DEFINE(RegionOp) { if (GrFSAAType::kUnifiedMSAA == fsaaType && random->nextBool()) { aaType = GrAAType::kMSAA; } - return RegionOp::Make(std::move(paint), viewMatrix, region, aaType); + return RegionOp::Make(std::move(paint), viewMatrix, region, aaType, + GrGetRandomStencil(random, context)); } #endif |