From ff58e4679b9473ce19abb81a3e50fc6a18f0981d Mon Sep 17 00:00:00 2001 From: sugoi Date: Thu, 16 Oct 2014 05:19:31 -0700 Subject: [PATCH] Disabled YUV decoding for subsets Image subsets were always showing the same tile and were causing an image to be fully YUV decoded once per tile, which was both slow and wrong. BUG=413001, 419718 Review URL: https://codereview.chromium.org/661483002 --- src/gpu/SkGr.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp index fdd4a79..e7d4ea1 100644 --- a/src/gpu/SkGr.cpp +++ b/src/gpu/SkGr.cpp @@ -220,6 +220,12 @@ 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)) { -- 2.7.4