From 21027994192f395bbd1507558b84f59b3c7cf0da Mon Sep 17 00:00:00 2001 From: scroggo Date: Thu, 2 Apr 2015 13:22:38 -0700 Subject: Test SkCodec to kIndex8 in nanobench. BUG=skia:3257 BUG=skia:3475 Review URL: https://codereview.chromium.org/1051973002 --- bench/CodecBench.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'bench/CodecBench.cpp') diff --git a/bench/CodecBench.cpp b/bench/CodecBench.cpp index e68c5de6fa..debda712b7 100644 --- a/bench/CodecBench.cpp +++ b/bench/CodecBench.cpp @@ -48,18 +48,32 @@ bool CodecBench::isSuitableFor(Backend backend) { void CodecBench::onPreDraw() { SkAutoTDelete codec(SkCodec::NewFromData(fData)); - fBitmap.allocPixels(codec->getInfo().makeColorType(fColorType)); + + fInfo = codec->getInfo().makeColorType(fColorType); + SkAlphaType alphaType; + // Caller should not have created this CodecBench if the alpha type was + // invalid. + SkAssertResult(SkColorTypeValidateAlphaType(fColorType, fInfo.alphaType(), + &alphaType)); + if (alphaType != fInfo.alphaType()) { + fInfo = fInfo.makeAlphaType(alphaType); + } + + fPixelStorage.reset(fInfo.getSafeSize(fInfo.minRowBytes())); } void CodecBench::onDraw(const int n, SkCanvas* canvas) { SkAutoTDelete codec; + SkPMColor colorTable[256]; + int colorCount; for (int i = 0; i < n; i++) { + colorCount = 256; codec.reset(SkCodec::NewFromData(fData)); #ifdef SK_DEBUG const SkImageGenerator::Result result = #endif - // fBitmap.info() was set to use fColorType in onPreDraw. - codec->getPixels(fBitmap.info(), fBitmap.getPixels(), fBitmap.rowBytes()); + codec->getPixels(fInfo, fPixelStorage.get(), fInfo.minRowBytes(), + NULL, colorTable, &colorCount); SkASSERT(result == SkImageGenerator::kSuccess || result == SkImageGenerator::kIncompleteInput); } -- cgit v1.2.3