From b62f50cf763279fa0d0aa2f80624de02c7a1c2fb Mon Sep 17 00:00:00 2001 From: Brian Osman Date: Thu, 12 Jul 2018 14:44:27 -0400 Subject: Replace nearly all kRespect with kIgnore - Encoders and decoders always assume kIgnore. - They are less opinionated about F16 and color space, we just trust the color space that's passed in, and put that directly in the image (no sRGB encoding). - SkBitmap and SkPixmap read/write pixels functions were defaulting to kResepct, those are now always kIgnore. - Many other bits of plumbing are simplified, and I added a default of kIgnore to SkImage::makeColorSpace, so we can phase out that argument entirely. - Still need to add defaults to other public APIs that take SkTransferFunctionBehavior. - This makes gold think that we've dramatically changed the contents of all F16 images, but that's because it doesn't understand the (now linear) color space that's embedded. Once we triage them all once, they will work fine (and they'll look perfect in the browser). Bug: skia: Change-Id: I62fa090f96cae1b67d181ce14bd91f34ff2ed747 Reviewed-on: https://skia-review.googlesource.com/140570 Commit-Queue: Brian Osman Reviewed-by: Mike Klein --- tests/CodecTest.cpp | 25 ++++++++----------------- tests/EncodeTest.cpp | 2 +- tests/ImageTest.cpp | 7 +++---- 3 files changed, 12 insertions(+), 22 deletions(-) (limited to 'tests') diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp index 35cfb6c11b..179994be7c 100644 --- a/tests/CodecTest.cpp +++ b/tests/CodecTest.cpp @@ -1457,21 +1457,16 @@ DEF_TEST(Codec_InvalidAnimated, r) { } static void encode_format(SkDynamicMemoryWStream* stream, const SkPixmap& pixmap, - SkTransferFunctionBehavior unpremulBehavior, SkEncodedImageFormat format) { - SkPngEncoder::Options pngOptions; - SkWebpEncoder::Options webpOptions; - pngOptions.fUnpremulBehavior = unpremulBehavior; - webpOptions.fUnpremulBehavior = unpremulBehavior; switch (format) { case SkEncodedImageFormat::kPNG: - SkPngEncoder::Encode(stream, pixmap, pngOptions); + SkPngEncoder::Encode(stream, pixmap, SkPngEncoder::Options()); break; case SkEncodedImageFormat::kJPEG: SkJpegEncoder::Encode(stream, pixmap, SkJpegEncoder::Options()); break; case SkEncodedImageFormat::kWEBP: - SkWebpEncoder::Encode(stream, pixmap, webpOptions); + SkWebpEncoder::Encode(stream, pixmap, SkWebpEncoder::Options()); break; default: SkASSERT(false); @@ -1479,8 +1474,7 @@ static void encode_format(SkDynamicMemoryWStream* stream, const SkPixmap& pixmap } } -static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format, - SkTransferFunctionBehavior unpremulBehavior) { +static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format) { // Test with sRGB color space. SkBitmap srgbBitmap; SkImageInfo srgbInfo = SkImageInfo::MakeS32(1, 1, kOpaque_SkAlphaType); @@ -1489,7 +1483,7 @@ static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format, SkPixmap pixmap; srgbBitmap.peekPixels(&pixmap); SkDynamicMemoryWStream srgbBuf; - encode_format(&srgbBuf, pixmap, unpremulBehavior, format); + encode_format(&srgbBuf, pixmap, format); sk_sp srgbData = srgbBuf.detachAsData(); std::unique_ptr srgbCodec(SkCodec::MakeFromData(srgbData)); REPORTER_ASSERT(r, srgbCodec->getInfo().colorSpace() == SkColorSpace::MakeSRGB().get()); @@ -1499,7 +1493,7 @@ static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format, sk_sp p3 = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, SkColorSpace::kDCIP3_D65_Gamut); pixmap.setColorSpace(p3); - encode_format(&p3Buf, pixmap, unpremulBehavior, format); + encode_format(&p3Buf, pixmap, format); sk_sp p3Data = p3Buf.detachAsData(); std::unique_ptr p3Codec(SkCodec::MakeFromData(p3Data)); REPORTER_ASSERT(r, p3Codec->getInfo().colorSpace()->gammaCloseToSRGB()); @@ -1518,12 +1512,9 @@ static void test_encode_icc(skiatest::Reporter* r, SkEncodedImageFormat format, } DEF_TEST(Codec_EncodeICC, r) { - test_encode_icc(r, SkEncodedImageFormat::kPNG, SkTransferFunctionBehavior::kRespect); - test_encode_icc(r, SkEncodedImageFormat::kJPEG, SkTransferFunctionBehavior::kRespect); - test_encode_icc(r, SkEncodedImageFormat::kWEBP, SkTransferFunctionBehavior::kRespect); - test_encode_icc(r, SkEncodedImageFormat::kPNG, SkTransferFunctionBehavior::kIgnore); - test_encode_icc(r, SkEncodedImageFormat::kJPEG, SkTransferFunctionBehavior::kIgnore); - test_encode_icc(r, SkEncodedImageFormat::kWEBP, SkTransferFunctionBehavior::kIgnore); + test_encode_icc(r, SkEncodedImageFormat::kPNG); + test_encode_icc(r, SkEncodedImageFormat::kJPEG); + test_encode_icc(r, SkEncodedImageFormat::kWEBP); } DEF_TEST(Codec_webp_rowsDecoded, r) { diff --git a/tests/EncodeTest.cpp b/tests/EncodeTest.cpp index 3c11663c98..30b53022df 100644 --- a/tests/EncodeTest.cpp +++ b/tests/EncodeTest.cpp @@ -336,5 +336,5 @@ DEF_TEST(Encode_WebpOptions, r) { SkImage::MakeFromEncoded(data3)->asLegacyBitmap(&bm3); REPORTER_ASSERT(r, almost_equals(bm0, bm1, 0)); REPORTER_ASSERT(r, almost_equals(bm0, bm2, 90)); - REPORTER_ASSERT(r, almost_equals(bm2, bm3, 45)); + REPORTER_ASSERT(r, almost_equals(bm2, bm3, 50)); } diff --git a/tests/ImageTest.cpp b/tests/ImageTest.cpp index 14df879174..6d2fb5976d 100644 --- a/tests/ImageTest.cpp +++ b/tests/ImageTest.cpp @@ -1206,7 +1206,7 @@ DEF_TEST(Image_makeColorSpace, r) { *srgbBitmap.getAddr32(0, 0) = SkSwizzle_RGBA_to_PMColor(0xFF604020); srgbBitmap.setImmutable(); sk_sp srgbImage = SkImage::MakeFromBitmap(srgbBitmap); - sk_sp p3Image = srgbImage->makeColorSpace(p3, SkTransferFunctionBehavior::kIgnore); + sk_sp p3Image = srgbImage->makeColorSpace(p3); SkBitmap p3Bitmap; bool success = p3Image->asLegacyBitmap(&p3Bitmap); @@ -1217,8 +1217,7 @@ DEF_TEST(Image_makeColorSpace, r) { REPORTER_ASSERT(r, almost_equal(0x40, SkGetPackedG32(*p3Bitmap.getAddr32(0, 0)))); REPORTER_ASSERT(r, almost_equal(0x5E, SkGetPackedB32(*p3Bitmap.getAddr32(0, 0)))); - sk_sp adobeImage = srgbImage->makeColorSpace(adobeGamut, - SkTransferFunctionBehavior::kIgnore); + sk_sp adobeImage = srgbImage->makeColorSpace(adobeGamut); SkBitmap adobeBitmap; success = adobeImage->asLegacyBitmap(&adobeBitmap); REPORTER_ASSERT(r, success); @@ -1227,7 +1226,7 @@ DEF_TEST(Image_makeColorSpace, r) { REPORTER_ASSERT(r, almost_equal(0x4C, SkGetPackedB32(*adobeBitmap.getAddr32(0, 0)))); srgbImage = GetResourceAsImage("images/1x1.png"); - p3Image = srgbImage->makeColorSpace(p3, SkTransferFunctionBehavior::kIgnore); + p3Image = srgbImage->makeColorSpace(p3); success = p3Image->asLegacyBitmap(&p3Bitmap); REPORTER_ASSERT(r, success); REPORTER_ASSERT(r, almost_equal(0x8B, SkGetPackedR32(*p3Bitmap.getAddr32(0, 0)))); -- cgit v1.2.3