Index: src/core/SkImageCacherator.cpp |
diff --git a/src/core/SkImageCacherator.cpp b/src/core/SkImageCacherator.cpp |
index 155eb822420eaac37242d04aff2b14471af98a81..594a8e26ceb627215d441a1c95c2b579ea6f6ba9 100644 |
--- a/src/core/SkImageCacherator.cpp |
+++ b/src/core/SkImageCacherator.cpp |
@@ -239,7 +239,8 @@ static GrTexture* set_key_and_return(GrTexture* tex, const GrUniqueKey& key) { |
* 5. Ask the generator to return RGB(A) data, which the GPU can convert |
*/ |
GrTexture* SkImageCacherator::lockTexture(GrContext* ctx, const GrUniqueKey& key, |
- const SkImage* client, SkImage::CachingHint chint) { |
+ const SkImage* client, SkImage::CachingHint chint, |
+ bool willBeMipped) { |
// Values representing the various texture lock paths we can take. Used for logging the path |
// taken to a histogram. |
enum LockTexturePath { |
@@ -301,7 +302,12 @@ GrTexture* SkImageCacherator::lockTexture(GrContext* ctx, const GrUniqueKey& key |
// 5. Ask the generator to return RGB(A) data, which the GPU can convert |
SkBitmap bitmap; |
if (this->tryLockAsBitmap(&bitmap, client, chint)) { |
- GrTexture* tex = GrUploadBitmapToTexture(ctx, bitmap); |
+ GrTexture* tex = nullptr; |
+ if (willBeMipped) { |
+ tex = GrGenerateMipMapsAndUploadToTexture(ctx, bitmap); |
+ } else { |
+ tex = GrUploadBitmapToTexture(ctx, bitmap); |
+ } |
if (tex) { |
SK_HISTOGRAM_ENUMERATION("LockTexturePath", kRGBA_LockTexturePath, |
kLockTexturePathCount); |