| Index: dm/DMSrcSink.cpp
|
| diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
|
| index c03a8c4c984161c9a7c1aade3cc4b8f70b3b796f..63a9ddf4da515247f3564a1815239ab027f6403c 100644
|
| --- a/dm/DMSrcSink.cpp
|
| +++ b/dm/DMSrcSink.cpp
|
| @@ -849,12 +849,15 @@ bool ColorCodecSrc::veto(SinkFlags flags) const {
|
| }
|
|
|
| Error ColorCodecSrc::draw(SkCanvas* canvas) const {
|
| - if (kRGB_565_SkColorType == canvas->imageInfo().colorType()) {
|
| - return Error::Nonfatal("No need to test color correction to 565 backend.");
|
| - }
|
| + bool runInLegacyMode = kBaseline_Mode == fMode;
|
| +#if defined(SK_TEST_QCMS)
|
| + runInLegacyMode = runInLegacyMode || kQCMS_HPZR30w_Mode == fMode;
|
| +#endif
|
|
|
| - if (nullptr == canvas->imageInfo().colorSpace() && kRGBA_F16_SkColorType == fColorType) {
|
| - return Error::Nonfatal("F16 does not draw in legacy mode.");
|
| + if (runInLegacyMode && canvas->imageInfo().colorSpace()) {
|
| + return Error::Nonfatal("Skipping tests that are only interesting in legacy mode.");
|
| + } else if (!runInLegacyMode && !canvas->imageInfo().colorSpace()) {
|
| + return Error::Nonfatal("Skipping tests that are only interesting in srgb mode.");
|
| }
|
|
|
| SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str()));
|
| @@ -882,6 +885,10 @@ Error ColorCodecSrc::draw(SkCanvas* canvas) const {
|
| }
|
|
|
| SkImageInfo decodeInfo = codec->getInfo().makeColorType(fColorType).makeColorSpace(dstSpace);
|
| + if (kUnpremul_SkAlphaType == decodeInfo.alphaType()) {
|
| + decodeInfo = decodeInfo.makeAlphaType(kPremul_SkAlphaType);
|
| + }
|
| +
|
| SkImageInfo bitmapInfo = decodeInfo;
|
| if (kRGBA_8888_SkColorType == decodeInfo.colorType() ||
|
| kBGRA_8888_SkColorType == decodeInfo.colorType())
|
| @@ -910,6 +917,10 @@ Error ColorCodecSrc::draw(SkCanvas* canvas) const {
|
| #if defined(SK_TEST_QCMS)
|
| case kQCMS_HPZR30w_Mode: {
|
| sk_sp<SkData> srcData = codec->getICCData();
|
| + if (!srcData) {
|
| + return Error::Nonfatal("No ICC profile data. Cannot test with QCMS.\n");
|
| + }
|
| +
|
| SkAutoTCallVProc<qcms_profile, qcms_profile_release>
|
| srcSpace(qcms_profile_from_memory(srcData->data(), srcData->size()));
|
| if (!srcSpace) {
|
|
|