| Index: src/gpu/SkGr.cpp
 | 
| diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
 | 
| index 60736da5723e430237c6d8b18b60d2831deaf759..fb2916daff117fe697aa4633b5b50f70e2779272 100644
 | 
| --- a/src/gpu/SkGr.cpp
 | 
| +++ b/src/gpu/SkGr.cpp
 | 
| @@ -329,7 +329,8 @@ void GrInstallBitmapUniqueKeyInvalidator(const GrUniqueKey& key, SkPixelRef* pix
 | 
|      pixelRef->addGenIDChangeListener(new Invalidator(key));
 | 
|  }
 | 
|  
 | 
| -GrTexture* GrGenerateMipMapsAndUploadToTexture(GrContext* ctx, const SkBitmap& bitmap)
 | 
| +GrTexture* GrGenerateMipMapsAndUploadToTexture(GrContext* ctx, const SkBitmap& bitmap,
 | 
| +                                               SkSourceGammaTreatment gammaTreatment)
 | 
|  {
 | 
|      GrSurfaceDesc desc = GrImageInfoToSurfaceDesc(bitmap.info(), *ctx->caps());
 | 
|      if (kIndex_8_SkColorType != bitmap.colorType() && !bitmap.readyToDraw()) {
 | 
| @@ -403,11 +404,13 @@ GrTexture* GrUploadMipMapToTexture(GrContext* ctx, const SkImageInfo& info,
 | 
|  }
 | 
|  
 | 
|  GrTexture* GrRefCachedBitmapTexture(GrContext* ctx, const SkBitmap& bitmap,
 | 
| -                                    const GrTextureParams& params) {
 | 
| +                                    const GrTextureParams& params,
 | 
| +                                    SkSourceGammaTreatment gammaTreatment) {
 | 
|      if (bitmap.getTexture()) {
 | 
| -        return GrBitmapTextureAdjuster(&bitmap).refTextureSafeForParams(params, nullptr);
 | 
| +        return GrBitmapTextureAdjuster(&bitmap).refTextureSafeForParams(params, gammaTreatment,
 | 
| +                                                                        nullptr);
 | 
|      }
 | 
| -    return GrBitmapTextureMaker(ctx, bitmap).refTextureForParams(params);
 | 
| +    return GrBitmapTextureMaker(ctx, bitmap).refTextureForParams(params, gammaTreatment);
 | 
|  }
 | 
|  
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
| @@ -519,8 +522,10 @@ static inline bool skpaint_to_grpaint_impl(GrContext* context,
 | 
|          if (shaderProcessor) {
 | 
|              shaderFP = *shaderProcessor;
 | 
|          } else if (const SkShader* shader = skPaint.getShader()) {
 | 
| +            SkSourceGammaTreatment gammaTreatment = allowSRGBInputs
 | 
| +                ? SkSourceGammaTreatment::kRespect : SkSourceGammaTreatment::kIgnore;
 | 
|              aufp.reset(shader->asFragmentProcessor(context, viewM, nullptr,
 | 
| -                                                   skPaint.getFilterQuality()));
 | 
| +                                                   skPaint.getFilterQuality(), gammaTreatment));
 | 
|              shaderFP = aufp;
 | 
|              if (!shaderFP) {
 | 
|                  return false;
 | 
| @@ -689,10 +694,13 @@ bool SkPaintToGrPaintWithTexture(GrContext* context,
 | 
|      SkAutoTUnref<const GrFragmentProcessor> shaderFP;
 | 
|      if (textureIsAlphaOnly) {
 | 
|          if (const SkShader* shader = paint.getShader()) {
 | 
| +            SkSourceGammaTreatment gammaTreatment = allowSRGBInputs
 | 
| +                ? SkSourceGammaTreatment::kRespect : SkSourceGammaTreatment::kIgnore;
 | 
|              shaderFP.reset(shader->asFragmentProcessor(context,
 | 
|                                                         viewM,
 | 
|                                                         nullptr,
 | 
| -                                                       paint.getFilterQuality()));
 | 
| +                                                       paint.getFilterQuality(),
 | 
| +                                                       gammaTreatment));
 | 
|              if (!shaderFP) {
 | 
|                  return false;
 | 
|              }
 | 
| 
 |