| Index: src/gpu/SkGr.cpp
|
| diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
|
| index 31372cd02a1816cf378ecae4f71070465983955d..fb2ebdd53fcbbf70c1ed93568f14ed3526b7bce8 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;
|
|
|