aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrDrawTarget.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2016-03-02 08:43:13 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-02 08:43:13 -0800
commit86c60758e9e4f9e203d7462cb22b2a245a0f51bd (patch)
tree0cc77d90e91bf61a381878afbdce7022b89524ff /src/gpu/GrDrawTarget.cpp
parent46b301d2222b60dd5ab495b917dea163e8be94ef (diff)
Begin weaning GrClipMaskManager off of GrDrawTarget (take 2)
Diffstat (limited to 'src/gpu/GrDrawTarget.cpp')
-rw-r--r--src/gpu/GrDrawTarget.cpp18
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);