Index: src/gpu/SkGr.cpp |
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp |
index 2127c367444cf86e7e58584556187d6e4368a3d9..4906cbbdcfc5bcbce1d2a0d2adfe9102dcb4780f 100644 |
--- a/src/gpu/SkGr.cpp |
+++ b/src/gpu/SkGr.cpp |
@@ -344,10 +344,9 @@ GrTexture* GrGenerateMipMapsAndUploadToTexture(GrContext* ctx, const SkBitmap& b |
return texture.release(); |
} |
- // SkMipMap::Build doesn't handle sRGB data correctly (yet). |
- // Failover to the GL code-path for now. |
- if (kLinear_SkColorProfileType != bitmap.profileType()) { |
- return nullptr; |
+ SkMipMap::SrcGammaMode mode = SkMipMap::kRespect_SrcGammaMode; |
+ if (/* we're in compatibility-mode-for-L32*/true) { |
+ mode = SkMipMap::kIgnore_SrcGammaMode; |
} |
SkASSERT(sizeof(int) <= sizeof(uint32_t)); |
@@ -365,7 +364,7 @@ GrTexture* GrGenerateMipMapsAndUploadToTexture(GrContext* ctx, const SkBitmap& b |
sk_throw(); |
} |
- SkAutoTDelete<SkMipMap> mipmaps(SkMipMap::Build(pixmap, nullptr)); |
+ SkAutoTDelete<SkMipMap> mipmaps(SkMipMap::Build(pixmap, mode, nullptr)); |
if (!mipmaps) { |
return nullptr; |
} |