Index: src/gpu/SkGr.cpp |
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp |
index fdd4a79e48b22a8dffc74198bf764315f1059666..8d80c6ea507dd2bde11fa54feaa042e35ba972fa 100644 |
--- a/src/gpu/SkGr.cpp |
+++ b/src/gpu/SkGr.cpp |
@@ -220,9 +220,19 @@ static GrTexture *load_etc1_texture(GrContext* ctx, bool cache, |
static GrTexture *load_yuv_texture(GrContext* ctx, bool cache, const GrTextureParams* params, |
const SkBitmap& bm, const GrTextureDesc& desc) { |
+ // Subsets are not supported, the whole pixelRef is loaded when using YUV decoding |
+ if ((bm.pixelRef()->info().width() != bm.info().width()) || |
+ (bm.pixelRef()->info().height() != bm.info().height())) { |
+ return NULL; |
+ } |
+ |
SkPixelRef* pixelRef = bm.pixelRef(); |
SkISize yuvSizes[3]; |
- if ((NULL == pixelRef) || !pixelRef->getYUV8Planes(yuvSizes, NULL, NULL, NULL)) { |
+ const int maxTextureSize = ctx->getMaxTextureSize(); |
+ if ((NULL == pixelRef) || !pixelRef->getYUV8Planes(yuvSizes, NULL, NULL, NULL) || |
bsalomon
2014/10/15 15:34:42
Should the failure happen in getYUV8Planes rather
sugoi1
2014/10/15 18:13:28
getYUV8Planes() doesn't know anything about the bi
bsalomon
2014/10/15 18:31:54
Acknowledged.
|
+ (yuvSizes[0].fWidth > maxTextureSize) || (yuvSizes[0].fHeight > maxTextureSize) || |
+ (yuvSizes[1].fWidth > maxTextureSize) || (yuvSizes[1].fHeight > maxTextureSize) || |
bsalomon
2014/10/15 15:34:42
Are these checks needed?
sugoi1
2014/10/15 18:13:28
Well, it's not impossible that these would be requ
bsalomon
2014/10/15 18:31:54
In any case, wouldn't we just fail down below in r
sugoi1
2014/10/15 19:08:56
Ah, well, if that's the case I'll just remove thes
|
+ (yuvSizes[2].fWidth > maxTextureSize) || (yuvSizes[2].fHeight > maxTextureSize)) { |
return NULL; |
} |