diff options
author | scroggo <scroggo@google.com> | 2015-04-02 13:22:38 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-02 13:22:38 -0700 |
commit | 21027994192f395bbd1507558b84f59b3c7cf0da (patch) | |
tree | a69071cb3aa375d65d913a884051fd7b521a4709 /bench/CodecBench.cpp | |
parent | 028a4135aa6404ccd3a494813befe6e1a35e5e6c (diff) |
Test SkCodec to kIndex8 in nanobench.
BUG=skia:3257
BUG=skia:3475
Review URL: https://codereview.chromium.org/1051973002
Diffstat (limited to 'bench/CodecBench.cpp')
-rw-r--r-- | bench/CodecBench.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
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<SkCodec> 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<SkCodec> 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); } |