aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar bsalomon <bsalomon@google.com>2015-03-06 08:42:34 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-03-06 08:42:34 -0800
commit9ce30e1cd19ad813091aa9876fceb416fb781352 (patch)
treec25a44b98fd8e6736fbbaef73454a3b2e172b882
parentbb3be25a861e70e0752956cdd03f88f4bf9d167e (diff)
Clip scissor to RT bounds
R=joshualitt@google.com NOTREECHECKS=true Review URL: https://codereview.chromium.org/985783002
-rw-r--r--src/gpu/GrClipMaskManager.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp
index b58c56566e..66d817ec00 100644
--- a/src/gpu/GrClipMaskManager.cpp
+++ b/src/gpu/GrClipMaskManager.cpp
@@ -240,10 +240,15 @@ bool GrClipMaskManager::setupClipping(GrPipelineBuilder* pipelineBuilder,
case GrClip::kWideOpen_ClipType:
SkFAIL("Should have caught this with clip.isWideOpen()");
return true;
- case GrClip::kIRect_ClipType:
- scissorState->set(clip.irect());
- this->setPipelineBuilderStencil(pipelineBuilder, ars);
- return true;
+ case GrClip::kIRect_ClipType: {
+ SkIRect scissor = clip.irect();
+ if (scissor.intersect(clipSpaceRTIBounds)) {
+ scissorState->set(scissor);
+ this->setPipelineBuilderStencil(pipelineBuilder, ars);
+ return true;
+ }
+ return false;
+ }
case GrClip::kClipStack_ClipType: {
clipSpaceRTIBounds.offset(clip.origin());
GrReducedClip::ReduceClipStack(*clip.clipStack(),