diff options
author | msarett <msarett@google.com> | 2016-07-28 17:11:18 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-07-28 17:11:18 -0700 |
commit | 39979d8c6b97889f600a212cfc9b063360f3de2f (patch) | |
tree | 3a63566b6e7643335fda8c60451b922c73bac92e /bench | |
parent | ecf3dbe8f2987a08b21be1aff61b7fbfbb69640a (diff) |
Revert of Add color space xform support to SkJpegCodec (includes F16!) (patchset #9 id:260001 of https://codereview.chromium.org/2174493002/ )
Reason for revert:
Breaking MSAN
Original issue's description:
> Add color space xform support to SkJpegCodec (includes F16!)
>
> Also changes SkColorXform to support:
> RGBA->RGBA
> RGBA->BGRA
>
> Instead of:
> RGBA->SkPMColor
>
> TBR=reed@google.com
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002
> CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/73d55332e2846dd05e9efdaa2f017bcc3872884b
TBR=mtklein@google.com,reed@google.com,herb@google.com,brianosman@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review-Url: https://codereview.chromium.org/2195523002
Diffstat (limited to 'bench')
-rw-r--r-- | bench/CodecBench.cpp | 4 | ||||
-rw-r--r-- | bench/ColorCodecBench.cpp | 63 |
2 files changed, 42 insertions, 25 deletions
diff --git a/bench/CodecBench.cpp b/bench/CodecBench.cpp index 9bd404db55..fc52edfb07 100644 --- a/bench/CodecBench.cpp +++ b/bench/CodecBench.cpp @@ -42,9 +42,7 @@ bool CodecBench::isSuitableFor(Backend backend) { void CodecBench::onDelayedSetup() { SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(fData)); - fInfo = codec->getInfo().makeColorType(fColorType) - .makeAlphaType(fAlphaType) - .makeColorSpace(nullptr); + fInfo = codec->getInfo().makeColorType(fColorType).makeAlphaType(fAlphaType); fPixelStorage.reset(fInfo.getSafeSize(fInfo.minRowBytes())); } diff --git a/bench/ColorCodecBench.cpp b/bench/ColorCodecBench.cpp index ac1c2bc4c0..e17d597abb 100644 --- a/bench/ColorCodecBench.cpp +++ b/bench/ColorCodecBench.cpp @@ -41,13 +41,32 @@ bool ColorCodecBench::isSuitableFor(Backend backend) { void ColorCodecBench::decodeAndXform() { SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(fEncoded.get())); - SkASSERT(codec); - #ifdef SK_DEBUG - SkCodec::Result result = + const SkCodec::Result result = #endif - codec->getPixels(fDstInfo, fDst.get(), fDstInfo.minRowBytes()); + codec->startScanlineDecode(fSrcInfo); SkASSERT(SkCodec::kSuccess == result); + + sk_sp<SkColorSpace> srcSpace = sk_ref_sp(codec->getInfo().colorSpace()); + if (!srcSpace) { + srcSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); + } + std::unique_ptr<SkColorSpaceXform> xform = SkColorSpaceXform::New(srcSpace, fDstSpace); + SkASSERT(xform); + + void* dst = fDst.get(); + for (int y = 0; y < fSrcInfo.height(); y++) { +#ifdef SK_DEBUG + const int rows = +#endif + codec->getScanlines(fSrc.get(), 1, 0); + SkASSERT(1 == rows); + + FLAGS_half ? + xform->applyToF16((uint64_t*) dst, (uint32_t*) fSrc.get(), fSrcInfo.width()) : + xform->applyTo8888((SkPMColor*) dst, (uint32_t*) fSrc.get(), fSrcInfo.width()); + dst = SkTAddOffset<void>(dst, fDstInfo.minRowBytes()); + } } #if defined(SK_TEST_QCMS) @@ -102,7 +121,7 @@ void ColorCodecBench::xformOnly() { // Transform in place FLAGS_half ? xform->applyToF16((uint64_t*) dst, (uint32_t*) src, fSrcInfo.width()) : - xform->applyToRGBA((SkPMColor*) dst, (uint32_t*) src, fSrcInfo.width()); + xform->applyTo8888((SkPMColor*) dst, (uint32_t*) src, fSrcInfo.width()); dst = SkTAddOffset<void>(dst, fDstInfo.minRowBytes()); src = SkTAddOffset<void>(src, fSrcInfo.minRowBytes()); } @@ -138,12 +157,28 @@ void ColorCodecBench::xformOnlyQCMS() { void ColorCodecBench::onDelayedSetup() { SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(fEncoded.get())); + fSrcInfo = codec->getInfo().makeColorType(kRGBA_8888_SkColorType); + + fDstInfo = fSrcInfo; + if (FLAGS_half) { + fDstInfo = fDstInfo.makeColorType(kRGBA_F16_SkColorType); + } + fDst.reset(fDstInfo.getSafeSize(fDstInfo.minRowBytes())); + + if (FLAGS_xform_only) { + fSrc.reset(fSrcInfo.getSafeSize(fSrcInfo.minRowBytes())); + codec->getPixels(fSrcInfo, fSrc.get(), fSrcInfo.minRowBytes()); + } else { + // Set-up a row buffer to decode into before transforming to dst. + fSrc.reset(fSrcInfo.minRowBytes()); + } + fSrcData = codec->getICCData(); sk_sp<SkData> dstData = SkData::MakeFromFileName( GetResourcePath("monitor_profiles/HP_ZR30w.icc").c_str()); SkASSERT(dstData); - fDstSpace = nullptr; + #if defined(SK_TEST_QCMS) if (FLAGS_qcms) { fDstSpaceQCMS.reset(FLAGS_srgb ? @@ -161,22 +196,6 @@ void ColorCodecBench::onDelayedSetup() { SkColorSpace::NewICC(dstData->data(), dstData->size()); SkASSERT(fDstSpace); } - - fSrcInfo = codec->getInfo().makeColorType(kRGBA_8888_SkColorType); - - fDstInfo = fSrcInfo.makeColorSpace(fDstSpace); - if (FLAGS_half) { - fDstInfo = fDstInfo.makeColorType(kRGBA_F16_SkColorType); - } - fDst.reset(fDstInfo.getSafeSize(fDstInfo.minRowBytes())); - - if (FLAGS_xform_only) { - fSrc.reset(fSrcInfo.getSafeSize(fSrcInfo.minRowBytes())); - codec->getPixels(fSrcInfo, fSrc.get(), fSrcInfo.minRowBytes()); - } else if (FLAGS_qcms) { - // Set-up a row buffer to decode into before transforming to dst. - fSrc.reset(fSrcInfo.minRowBytes()); - } } void ColorCodecBench::onDraw(int n, SkCanvas*) { |