diff options
author | 2014-10-27 14:51:01 -0700 | |
---|---|---|
committer | 2014-10-27 14:51:01 -0700 | |
commit | 77b1307c1f5dac019575a6d431d5ce657370c4fb (patch) | |
tree | 2cc52fe0d28b143d0498fb8ddceb44b312013988 /src/gpu/GrClipMaskManager.cpp | |
parent | fa4689d56384da5bb264a480e636fac126fb93ca (diff) |
Scissor rect on drawinfo
BUG=skia:
Review URL: https://codereview.chromium.org/678683005
Diffstat (limited to 'src/gpu/GrClipMaskManager.cpp')
-rw-r--r-- | src/gpu/GrClipMaskManager.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp index 0738108ab8..1d193a59d9 100644 --- a/src/gpu/GrClipMaskManager.cpp +++ b/src/gpu/GrClipMaskManager.cpp @@ -211,9 +211,10 @@ bool GrClipMaskManager::installClipEffects(const GrReducedClip::ElementList& ele // sort out what kind of clip mask needs to be created: alpha, stencil, // scissor, or entirely software bool GrClipMaskManager::setupClipping(const GrClipData* clipDataIn, + const SkRect* devBounds, GrDrawState::AutoRestoreEffects* are, - GrDrawState::AutoRestoreStencil* asr, - const SkRect* devBounds) { + GrDrawState::AutoRestoreStencil* ars, + GrDrawTarget::ScissorState* scissorState) { fCurrClipMaskType = kNone_ClipMaskType; GrReducedClip::ElementList elements(16); @@ -249,8 +250,7 @@ bool GrClipMaskManager::setupClipping(const GrClipData* clipDataIn, } if (ignoreClip) { - fGpu->disableScissor(); - this->setDrawStateStencil(asr); + this->setDrawStateStencil(ars); return true; } @@ -271,11 +271,9 @@ bool GrClipMaskManager::setupClipping(const GrClipData* clipDataIn, scissorSpaceIBounds.offset(-clipDataIn->fOrigin); if (NULL == devBounds || !SkRect::Make(scissorSpaceIBounds).contains(*devBounds)) { - fGpu->enableScissor(scissorSpaceIBounds); - } else { - fGpu->disableScissor(); + scissorState->set(scissorSpaceIBounds); } - this->setDrawStateStencil(asr); + this->setDrawStateStencil(ars); return true; } } @@ -306,8 +304,7 @@ bool GrClipMaskManager::setupClipping(const GrClipData* clipDataIn, rtSpaceMaskBounds.offset(-clipDataIn->fOrigin); are->set(fGpu->drawState()); setup_drawstate_aaclip(fGpu, result, rtSpaceMaskBounds); - fGpu->disableScissor(); - this->setDrawStateStencil(asr); + this->setDrawStateStencil(ars); return true; } // if alpha clip mask creation fails fall through to the non-AA code paths @@ -334,8 +331,8 @@ bool GrClipMaskManager::setupClipping(const GrClipData* clipDataIn, // use both stencil and scissor test to the bounds for the final draw. SkIRect scissorSpaceIBounds(clipSpaceIBounds); scissorSpaceIBounds.offset(clipSpaceToStencilSpaceOffset); - fGpu->enableScissor(scissorSpaceIBounds); - this->setDrawStateStencil(asr); + scissorState->set(scissorSpaceIBounds); + this->setDrawStateStencil(ars); return true; } |