| Index: src/gpu/GrClipMaskManager.cpp | 
| diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp | 
| index 6635436e8745d088e1e83dd05f047006b48de0f6..f0eb2477bd11605164a34cbfbe4601717bcc76d9 100644 | 
| --- a/src/gpu/GrClipMaskManager.cpp | 
| +++ b/src/gpu/GrClipMaskManager.cpp | 
| @@ -165,7 +165,7 @@ bool GrClipMaskManager::installClipEffects(GrPipelineBuilder* pipelineBuilder, | 
| invert ? kInverseFillAA_GrProcessorEdgeType : kFillAA_GrProcessorEdgeType; | 
| } else { | 
| edgeType = | 
| -                        invert ? kInverseFillBW_GrProcessorEdgeType : kFillBW_GrProcessorEdgeType; | 
| +invert ? kInverseFillBW_GrProcessorEdgeType : kFillBW_GrProcessorEdgeType; | 
| } | 
| SkAutoTUnref<GrFragmentProcessor> fp; | 
| switch (iter.get()->getType()) { | 
| @@ -229,57 +229,53 @@ bool GrClipMaskManager::setupClipping(GrPipelineBuilder* pipelineBuilder, | 
|  | 
| SkIRect clipSpaceRTIBounds = SkIRect::MakeWH(rt->width(), rt->height()); | 
| const GrClip& clip = pipelineBuilder->clip(); | 
| -    // TODO we shouldn't be ignoring the clip mask manager's clip.  This is temporary. | 
| -    bool ignoreClip = clip.isWideOpen(clipSpaceRTIBounds); | 
| -    if (!ignoreClip) { | 
| -        // The clip mask manager always draws with a single IRect so we special case that logic here | 
| -        // Image filters just use a rect, so we also special case that logic | 
| -        switch (clip.clipType()) { | 
| -            case GrClip::kWideOpen_ClipType: | 
| -                // we should have handled this case above | 
| -                SkASSERT(false); | 
| -            case GrClip::kIRect_ClipType: { | 
| -                clipSpaceIBounds = clip.irect(); | 
| -                SkNEW_INSERT_AT_LLIST_HEAD(&elements, | 
| -                                           Element, | 
| -                                           (SkRect::Make(clipSpaceIBounds), | 
| -                                            SkRegion::kIntersect_Op, false)); | 
| -            } break; | 
| -            case GrClip::kRect_ClipType: { | 
| -                clipSpaceIBounds.setLTRB(SkScalarCeilToInt(clip.rect().fLeft), | 
| -                                         SkScalarCeilToInt(clip.rect().fTop), | 
| -                                         SkScalarCeilToInt(clip.rect().fRight), | 
| -                                         SkScalarCeilToInt(clip.rect().fBottom)); | 
| -                SkNEW_INSERT_AT_LLIST_HEAD(&elements, | 
| -                                           Element, | 
| -                                           (SkRect::Make(clipSpaceIBounds), | 
| -                                            SkRegion::kIntersect_Op, false)); | 
| -            } break; | 
| -            case GrClip::kClipStack_ClipType: { | 
| -                clipSpaceRTIBounds.offset(clip.origin()); | 
| -                GrReducedClip::ReduceClipStack(*clip.clipStack(), | 
| -                                               clipSpaceRTIBounds, | 
| -                                               &elements, | 
| -                                               &genID, | 
| -                                               &initialState, | 
| -                                               &clipSpaceIBounds, | 
| -                                               &requiresAA); | 
| -                if (elements.isEmpty()) { | 
| -                    if (GrReducedClip::kAllIn_InitialState == initialState) { | 
| -                        ignoreClip = clipSpaceIBounds == clipSpaceRTIBounds; | 
| -                    } else { | 
| -                        return false; | 
| -                    } | 
| -                } | 
| -            } break; | 
| -        } | 
| -    } | 
| - | 
| -    if (ignoreClip) { | 
| +    if (clip.isWideOpen(clipSpaceRTIBounds)) { | 
| this->setPipelineBuilderStencil(pipelineBuilder, ars); | 
| return true; | 
| } | 
|  | 
| +    // The clip mask manager always draws with a single IRect so we special case that logic here | 
| +    // Image filters just use a rect, so we also special case that logic | 
| +    switch (clip.clipType()) { | 
| +        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::kRect_ClipType: { | 
| +            const SkRect& rect = clip.rect(); | 
| +            SkIRect scissor; | 
| +            scissor.fLeft   = SkScalarRoundToInt(rect.fLeft); | 
| +            scissor.fTop    = SkScalarRoundToInt(rect.fTop); | 
| +            scissor.fRight  = SkScalarRoundToInt(rect.fRight); | 
| +            scissor.fBottom = SkScalarRoundToInt(rect.fBottom); | 
| +            scissorState->set(scissor); | 
| +            this->setPipelineBuilderStencil(pipelineBuilder, ars); | 
| +        } return true; | 
| +        case GrClip::kClipStack_ClipType: { | 
| +            clipSpaceRTIBounds.offset(clip.origin()); | 
| +            GrReducedClip::ReduceClipStack(*clip.clipStack(), | 
| +                                            clipSpaceRTIBounds, | 
| +                                            &elements, | 
| +                                            &genID, | 
| +                                            &initialState, | 
| +                                            &clipSpaceIBounds, | 
| +                                            &requiresAA); | 
| +            if (elements.isEmpty()) { | 
| +                if (GrReducedClip::kAllIn_InitialState == initialState) { | 
| +                    if (clipSpaceIBounds == clipSpaceRTIBounds) { | 
| +                        this->setPipelineBuilderStencil(pipelineBuilder, ars); | 
| +                        return true; | 
| +                    } | 
| +                } else { | 
| +                    return false; | 
| +                } | 
| +            } | 
| +        } break; | 
| +    } | 
| + | 
| // An element count of 4 was chosen because of the common pattern in Blink of: | 
| //   isect RR | 
| //   diff  RR | 
|  |