diff options
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/SkGr.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp index 31372cd02a..fb2ebdd53f 100644 --- a/src/gpu/SkGr.cpp +++ b/src/gpu/SkGr.cpp @@ -244,7 +244,18 @@ static GrTexture* sk_gr_create_bitmap_texture(GrContext* ctx, // Is this an ETC1 encoded texture? #ifndef SK_IGNORE_ETC1_SUPPORT - else if (cache && ctx->getGpu()->caps()->isConfigTexturable(kETC1_GrPixelConfig)) { + else if ( + // We do not support scratch ETC1 textures, hence they should all be at least + // trying to go to the cache. + cache + // Make sure that the underlying device supports ETC1 textures before we go ahead + // and check the data. + && ctx->getGpu()->caps()->isConfigTexturable(kETC1_GrPixelConfig) + // If the bitmap had compressed data and was then uncompressed, it'll still return + // compressed data on 'refEncodedData' and upload it. Probably not good, since if + // the bitmap has available pixels, then they might not be what the decompressed + // data is. + && !(bitmap->readyToDraw())) { GrTexture *texture = load_etc1_texture(ctx, params, *bitmap, desc); if (NULL != texture) { return texture; |