| Index: src/gpu/SkGpuDevice.cpp
|
| diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
|
| index 7052d2531cff56b9212f964efb6b82df33900301..c808ade6c67d7d4b03393079858311bc3a3b3aeb 100644
|
| --- a/src/gpu/SkGpuDevice.cpp
|
| +++ b/src/gpu/SkGpuDevice.cpp
|
| @@ -1032,34 +1032,12 @@ void SkGpuDevice::drawBitmapCommon(const SkDraw& draw,
|
| // anti-aliased edges, we work around that for now by drawing directly
|
| // if the image size exceeds maximum texture size.
|
| int maxTextureSize = fContext->caps()->maxTextureSize();
|
| - bool directDraw = fRenderTarget->isUnifiedMultisampled() ||
|
| - !paint.isAntiAlias() ||
|
| - bitmap.width() > maxTextureSize ||
|
| - bitmap.height() > maxTextureSize;
|
| -
|
| - // we check whether dst rect are pixel aligned
|
| - if (!directDraw) {
|
| - bool staysRect = draw.fMatrix->rectStaysRect();
|
| -
|
| - if (staysRect) {
|
| - SkRect rect;
|
| - SkRect dstRect = SkRect::MakeXYWH(0, 0, dstSize.fWidth, dstSize.fHeight);
|
| - draw.fMatrix->mapRect(&rect, dstRect);
|
| - const SkScalar *scalars = rect.asScalars();
|
| - bool isDstPixelAligned = true;
|
| - for (int i = 0; i < 4; i++) {
|
| - if (!SkScalarIsInt(scalars[i])) {
|
| - isDstPixelAligned = false;
|
| - break;
|
| - }
|
| - }
|
| -
|
| - if (isDstPixelAligned)
|
| - directDraw = true;
|
| - }
|
| - }
|
| + bool drawAA = !fRenderTarget->isUnifiedMultisampled() &&
|
| + paint.isAntiAlias() &&
|
| + bitmap.width() <= maxTextureSize &&
|
| + bitmap.height() <= maxTextureSize;
|
|
|
| - if (paint.getMaskFilter() || !directDraw) {
|
| + if (paint.getMaskFilter() || drawAA) {
|
| // Convert the bitmap to a shader so that the rect can be drawn
|
| // through drawRect, which supports mask filters.
|
| SkBitmap tmp; // subset of bitmap, if necessary
|
|
|