aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-08-01 11:09:09 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-08-01 17:13:08 +0000
commit8514ebfb19c9c50e588283541133125b5aa8a05b (patch)
treef296931accc80264d7a8439f5418b22a49595149 /src
parente779ab17b6939e8fc709332399234fc25f1aa788 (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.cpp17
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