diff options
author | robertphillips <robertphillips@google.com> | 2016-03-02 08:43:13 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-02 08:43:13 -0800 |
commit | 86c60758e9e4f9e203d7462cb22b2a245a0f51bd (patch) | |
tree | 0cc77d90e91bf61a381878afbdce7022b89524ff /src/gpu/GrDrawTarget.cpp | |
parent | 46b301d2222b60dd5ab495b917dea163e8be94ef (diff) |
Begin weaning GrClipMaskManager off of GrDrawTarget (take 2)
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1754563003
Review URL: https://codereview.chromium.org/1754563003
Diffstat (limited to 'src/gpu/GrDrawTarget.cpp')
-rw-r--r-- | src/gpu/GrDrawTarget.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp index 173617ebe6..fc8c71b443 100644 --- a/src/gpu/GrDrawTarget.cpp +++ b/src/gpu/GrDrawTarget.cpp @@ -221,13 +221,25 @@ void GrDrawTarget::reset() { fBatches.reset(); } -void GrDrawTarget::drawBatch(const GrPipelineBuilder& pipelineBuilder, GrDrawBatch* batch) { +void GrDrawTarget::drawBatch(const GrPipelineBuilder& pipelineBuilder, + GrDrawBatch* batch, + const SkIRect* scissorRect) { // Setup clip GrPipelineBuilder::AutoRestoreStencil ars; GrAppliedClip clip; - if (!fClipMaskManager->setupClipping(pipelineBuilder, &ars, &batch->bounds(), &clip)) { - return; + + if (scissorRect) { + SkASSERT(GrClip::kWideOpen_ClipType == pipelineBuilder.clip().clipType()); + if (!fClipMaskManager->setupScissorClip(pipelineBuilder, &ars, *scissorRect, + &batch->bounds(), &clip)) { + return; + } + } else { + if (!fClipMaskManager->setupClipping(pipelineBuilder, &ars, &batch->bounds(), &clip)) { + return; + } } + GrPipelineBuilder::AutoRestoreFragmentProcessorState arfps; if (clip.clipCoverageFragmentProcessor()) { arfps.set(&pipelineBuilder); |