| Index: src/core/SkBitmapProcShader.cpp
 | 
| diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp
 | 
| index 5a33af55bab7a4dba63b4ba6964495d727bfa6df..9086072f981cdc773d5fc9d1678a936e64734ec5 100644
 | 
| --- a/src/core/SkBitmapProcShader.cpp
 | 
| +++ b/src/core/SkBitmapProcShader.cpp
 | 
| @@ -349,8 +349,8 @@ void SkBitmapProcShader::toString(SkString* str) const {
 | 
|  #if SK_SUPPORT_GPU
 | 
|  
 | 
|  #include "GrTextureAccess.h"
 | 
| -#include "effects/GrSimpleTextureEffect.h"
 | 
|  #include "SkGr.h"
 | 
| +#include "effects/GrSimpleTextureEffect.h"
 | 
|  
 | 
|  bool SkBitmapProcShader::asFragmentProcessor(GrContext* context, const SkPaint& paint,
 | 
|                                               const SkMatrix& viewM,
 | 
| @@ -382,41 +382,10 @@ bool SkBitmapProcShader::asFragmentProcessor(GrContext* context, const SkPaint&
 | 
|      // we check the matrix scale factors to determine how to interpret the filter quality setting.
 | 
|      // This completely ignores the complexity of the drawVertices case where explicit local coords
 | 
|      // are provided by the caller.
 | 
| -    bool useBicubic = false;
 | 
| -    GrTextureParams::FilterMode textureFilterMode;
 | 
| -    switch(paint.getFilterQuality()) {
 | 
| -        case kNone_SkFilterQuality:
 | 
| -            textureFilterMode = GrTextureParams::kNone_FilterMode;
 | 
| -            break;
 | 
| -        case kLow_SkFilterQuality:
 | 
| -            textureFilterMode = GrTextureParams::kBilerp_FilterMode;
 | 
| -            break;
 | 
| -        case kMedium_SkFilterQuality: {
 | 
| -            SkMatrix matrix;
 | 
| -            matrix.setConcat(viewM, this->getLocalMatrix());
 | 
| -            if (matrix.getMinScale() < SK_Scalar1) {
 | 
| -                textureFilterMode = GrTextureParams::kMipMap_FilterMode;
 | 
| -            } else {
 | 
| -                // Don't trigger MIP level generation unnecessarily.
 | 
| -                textureFilterMode = GrTextureParams::kBilerp_FilterMode;
 | 
| -            }
 | 
| -            break;
 | 
| -        }
 | 
| -        case kHigh_SkFilterQuality: {
 | 
| -            SkMatrix matrix;
 | 
| -            matrix.setConcat(viewM, this->getLocalMatrix());
 | 
| -            useBicubic = GrBicubicEffect::ShouldUseBicubic(matrix, &textureFilterMode);
 | 
| -            break;
 | 
| -        }
 | 
| -        default:
 | 
| -            SkErrorInternals::SetError( kInvalidPaint_SkError,
 | 
| -                                        "Sorry, I don't understand the filtering "
 | 
| -                                        "mode you asked for.  Falling back to "
 | 
| -                                        "MIPMaps.");
 | 
| -            textureFilterMode = GrTextureParams::kMipMap_FilterMode;
 | 
| -            break;
 | 
| -
 | 
| -    }
 | 
| +    bool doBicubic;
 | 
| +    GrTextureParams::FilterMode textureFilterMode =
 | 
| +            GrSkFilterQualityToGrFilterMode(paint.getFilterQuality(), viewM, this->getLocalMatrix(),
 | 
| +                                            &doBicubic);
 | 
|      GrTextureParams params(tm, textureFilterMode);
 | 
|      SkAutoTUnref<GrTexture> texture(GrRefCachedBitmapTexture(context, fRawBitmap, ¶ms));
 | 
|  
 | 
| @@ -430,7 +399,7 @@ bool SkBitmapProcShader::asFragmentProcessor(GrContext* context, const SkPaint&
 | 
|                                                  SkColor2GrColor(paint.getColor()) :
 | 
|                                                  SkColor2GrColorJustAlpha(paint.getColor());
 | 
|  
 | 
| -    if (useBicubic) {
 | 
| +    if (doBicubic) {
 | 
|          *fp = GrBicubicEffect::Create(procDataManager, texture, matrix, tm);
 | 
|      } else {
 | 
|          *fp = GrSimpleTextureEffect::Create(procDataManager, texture, matrix, params);
 | 
| 
 |