Chromium Code Reviews| Index: src/gpu/SkGpuDevice.cpp |
| diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
| index cddf50a98cbfd501b8f5d79d46933081eff94857..ec471ecc681188041ee0fc13d69efaa256020b23 100644 |
| --- a/src/gpu/SkGpuDevice.cpp |
| +++ b/src/gpu/SkGpuDevice.cpp |
| @@ -1170,20 +1170,16 @@ void SkGpuDevice::drawBitmapCommon(const SkDraw& draw, |
| SkPaint::FilterLevel paintFilterLevel = paint.getFilterLevel(); |
| GrTextureParams::FilterMode textureFilterMode; |
| - int tileFilterPad; |
| bool doBicubic = false; |
| switch(paintFilterLevel) { |
| case SkPaint::kNone_FilterLevel: |
| - tileFilterPad = 0; |
| textureFilterMode = GrTextureParams::kNone_FilterMode; |
| break; |
| case SkPaint::kLow_FilterLevel: |
| - tileFilterPad = 1; |
| textureFilterMode = GrTextureParams::kBilerp_FilterMode; |
| break; |
| case SkPaint::kMedium_FilterLevel: |
| - tileFilterPad = 1; |
| if (fContext->getMatrix().getMinScale() < SK_Scalar1) { |
| textureFilterMode = GrTextureParams::kMipMap_FilterMode; |
| } else { |
| @@ -1193,26 +1189,26 @@ void SkGpuDevice::drawBitmapCommon(const SkDraw& draw, |
| break; |
| case SkPaint::kHigh_FilterLevel: |
| // Minification can look bad with the bicubic effect. |
|
robertphillips
2014/05/20 15:34:50
Do we need to initialize textureFilterMode to be b
bsalomon
2014/05/20 16:13:06
not now :)
|
| - if (fContext->getMatrix().getMinScale() >= SK_Scalar1) { |
| - // We will install an effect that does the filtering in the shader. |
| - textureFilterMode = GrTextureParams::kNone_FilterMode; |
| - tileFilterPad = GrBicubicEffect::kFilterTexelPad; |
| - doBicubic = true; |
| - } else { |
| - textureFilterMode = GrTextureParams::kMipMap_FilterMode; |
| - tileFilterPad = 1; |
| - } |
| + doBicubic = |
| + GrBicubicEffect::ShouldUseBicubic(fContext->getMatrix(), &textureFilterMode); |
| break; |
| default: |
| SkErrorInternals::SetError( kInvalidPaint_SkError, |
| "Sorry, I don't understand the filtering " |
| "mode you asked for. Falling back to " |
| "MIPMaps."); |
| - tileFilterPad = 1; |
| textureFilterMode = GrTextureParams::kMipMap_FilterMode; |
| break; |
| } |
| + int tileFilterPad; |
| + if (doBicubic) { |
| + tileFilterPad = GrBicubicEffect::kFilterTexelPad; |
| + } else if (GrTextureParams::kNone_FilterMode == textureFilterMode) { |
| + tileFilterPad = 0; |
| + } else { |
| + tileFilterPad = 1; |
| + } |
| params.setFilterMode(textureFilterMode); |
| int maxTileSize = fContext->getMaxTextureSize() - 2 * tileFilterPad; |