diff options
-rw-r--r-- | src/core/SkImageCacherator.cpp | 5 | ||||
-rw-r--r-- | src/gpu/GrImageIDTextureAdjuster.cpp | 5 | ||||
-rw-r--r-- | src/gpu/SkGr.cpp | 6 |
3 files changed, 10 insertions, 6 deletions
diff --git a/src/core/SkImageCacherator.cpp b/src/core/SkImageCacherator.cpp index bb389e986b..7b5ff22677 100644 --- a/src/core/SkImageCacherator.cpp +++ b/src/core/SkImageCacherator.cpp @@ -303,11 +303,10 @@ GrTexture* SkImageCacherator::lockTexture(GrContext* ctx, const GrUniqueKey& key SkBitmap bitmap; if (this->tryLockAsBitmap(&bitmap, client, chint)) { GrTexture* tex = nullptr; - // disable mipmapping until we generate anisotropic mipmap levels - willBeMipped = false; if (willBeMipped) { tex = GrGenerateMipMapsAndUploadToTexture(ctx, bitmap); - } else { + } + if (!tex) { tex = GrUploadBitmapToTexture(ctx, bitmap); } if (tex) { diff --git a/src/gpu/GrImageIDTextureAdjuster.cpp b/src/gpu/GrImageIDTextureAdjuster.cpp index 5ba99d20de..6cfee90c14 100644 --- a/src/gpu/GrImageIDTextureAdjuster.cpp +++ b/src/gpu/GrImageIDTextureAdjuster.cpp @@ -90,11 +90,10 @@ GrTexture* GrBitmapTextureMaker::refOriginalTexture(bool willBeMipped) { return tex; } } - // disable mipmapping until we generate anisotropic mipmap levels - willBeMipped = false; if (willBeMipped) { tex = GrGenerateMipMapsAndUploadToTexture(this->context(), fBitmap); - } else { + } + if (!tex) { tex = GrUploadBitmapToTexture(this->context(), fBitmap); } if (tex && fOriginalKey.isValid()) { diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp index 701e763b1e..71d9e620e3 100644 --- a/src/gpu/SkGr.cpp +++ b/src/gpu/SkGr.cpp @@ -344,6 +344,12 @@ GrTexture* GrGenerateMipMapsAndUploadToTexture(GrContext* ctx, const SkBitmap& b return texture; } + // SkMipMap::Build doesn't handle sRGB data correctly (yet). + // Failover to the GL code-path for now. + if (kLinear_SkColorProfileType != bitmap.profileType()) { + return nullptr; + } + SkASSERT(sizeof(int) <= sizeof(uint32_t)); if (bitmap.width() < 0 || bitmap.height() < 0) { return nullptr; |