| Index: src/gpu/GrDrawContext.cpp
|
| diff --git a/src/gpu/GrDrawContext.cpp b/src/gpu/GrDrawContext.cpp
|
| index aa7057510ce9d88508ac45ab3a15abca06e588a7..a86e01e72b385328b069f84f412f43bfcc58e604 100644
|
| --- a/src/gpu/GrDrawContext.cpp
|
| +++ b/src/gpu/GrDrawContext.cpp
|
| @@ -337,31 +337,33 @@ void GrDrawContext::drawRect(const GrClip& clip,
|
| AutoCheckFlush acf(fDrawingManager);
|
|
|
| const SkStrokeRec& stroke = style->strokeRec();
|
| - if (stroke.getStyle() == SkStrokeRec::kFill_Style &&
|
| - !fContext->caps()->useDrawInsteadOfClear()) {
|
| - // Check if this is a full RT draw and can be replaced with a clear. We don't bother
|
| - // checking cases where the RT is fully inside a stroke.
|
| - SkRect rtRect;
|
| - fRenderTarget->getBoundsRect(&rtRect);
|
| - // Does the clip contain the entire RT?
|
| - if (clip.quickContains(rtRect)) {
|
| - SkMatrix invM;
|
| - if (!viewMatrix.invert(&invM)) {
|
| - return;
|
| - }
|
| - // Does the rect bound the RT?
|
| - SkPoint srcSpaceRTQuad[4];
|
| - invM.mapRectToQuad(srcSpaceRTQuad, rtRect);
|
| - if (rect_contains_inclusive(rect, srcSpaceRTQuad[0]) &&
|
| - rect_contains_inclusive(rect, srcSpaceRTQuad[1]) &&
|
| - rect_contains_inclusive(rect, srcSpaceRTQuad[2]) &&
|
| - rect_contains_inclusive(rect, srcSpaceRTQuad[3])) {
|
| - // Will it blend?
|
| - GrColor clearColor;
|
| - if (paint.isConstantBlendedColor(&clearColor)) {
|
| - this->getDrawTarget()->clear(nullptr, clearColor, true, this);
|
| + if (stroke.getStyle() == SkStrokeRec::kFill_Style) {
|
| +
|
| + if (!fContext->caps()->useDrawInsteadOfClear()) {
|
| + // Check if this is a full RT draw and can be replaced with a clear. We don't bother
|
| + // checking cases where the RT is fully inside a stroke.
|
| + SkRect rtRect;
|
| + fRenderTarget->getBoundsRect(&rtRect);
|
| + // Does the clip contain the entire RT?
|
| + if (clip.quickContains(rtRect)) {
|
| + SkMatrix invM;
|
| + if (!viewMatrix.invert(&invM)) {
|
| return;
|
| }
|
| + // Does the rect bound the RT?
|
| + SkPoint srcSpaceRTQuad[4];
|
| + invM.mapRectToQuad(srcSpaceRTQuad, rtRect);
|
| + if (rect_contains_inclusive(rect, srcSpaceRTQuad[0]) &&
|
| + rect_contains_inclusive(rect, srcSpaceRTQuad[1]) &&
|
| + rect_contains_inclusive(rect, srcSpaceRTQuad[2]) &&
|
| + rect_contains_inclusive(rect, srcSpaceRTQuad[3])) {
|
| + // Will it blend?
|
| + GrColor clearColor;
|
| + if (paint.isConstantBlendedColor(&clearColor)) {
|
| + this->getDrawTarget()->clear(nullptr, clearColor, true, this);
|
| + return;
|
| + }
|
| + }
|
| }
|
| }
|
|
|
|
|