aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2018-04-23 15:39:21 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-04-23 23:27:52 +0000
commit3b8feb331a11989fdd82c2d8d18e576df98e8895 (patch)
tree2e8dc9baa70f396abfbc431786898fb10adeae70
parent98e18970c419ac998603c11029b3c0c2d40ebd06 (diff)
call skcms_OptimizeForSpeed()
I've guarded src and dst separately, so that we can land, rebaseline just the src change, and then later (when it does something), rebaseline optimizing dst separately. Small threshold tweak to keep a unit test passing. Change-Id: I57cc43c54b6065f58fa8f9448ea1d73fc42505f0 Reviewed-on: https://skia-review.googlesource.com/123181 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Brian Osman <brianosman@google.com>
-rw-r--r--src/core/SkColorSpaceXform_skcms.cpp8
-rw-r--r--tests/ImageTest.cpp7
2 files changed, 11 insertions, 4 deletions
diff --git a/src/core/SkColorSpaceXform_skcms.cpp b/src/core/SkColorSpaceXform_skcms.cpp
index eb9a552bed..936f7e4dd5 100644
--- a/src/core/SkColorSpaceXform_skcms.cpp
+++ b/src/core/SkColorSpaceXform_skcms.cpp
@@ -19,6 +19,14 @@ public:
, fDstProfile(dstProfile)
, fPremulFormat(premulFormat) {
skcms_EnsureUsableAsDestination(&fDstProfile, &skcms_sRGB_profile);
+
+ #ifndef SK_DONT_OPTIMIZE_SRC_PROFILES_FOR_SPEED
+ skcms_OptimizeForSpeed(&fSrcProfile);
+ #endif
+ #ifndef SK_DONT_OPTIMIZE_DST_PROFILES_FOR_SPEED
+ // (This doesn't do anything yet, but we'd sure like it to.)
+ skcms_OptimizeForSpeed(&fDstProfile);
+ #endif
}
bool apply(ColorFormat, void*, ColorFormat, const void*, int, SkAlphaType) const override;
diff --git a/tests/ImageTest.cpp b/tests/ImageTest.cpp
index 73c0bf197c..679dc8add9 100644
--- a/tests/ImageTest.cpp
+++ b/tests/ImageTest.cpp
@@ -1126,10 +1126,6 @@ static sk_sp<SkImage> create_picture_image(sk_sp<SkColorSpace> space) {
nullptr, nullptr, SkImage::BitDepth::kU8, std::move(space));
};
-static inline bool almost_equal(int a, int b) {
- return SkTAbs(a - b) <= 1;
-}
-
DEF_TEST(Image_ColorSpace, r) {
sk_sp<SkColorSpace> srgb = SkColorSpace::MakeSRGB();
sk_sp<SkImage> image = GetResourceAsImage("images/mandrill_512_q075.jpg");
@@ -1177,6 +1173,9 @@ DEF_TEST(Image_makeColorSpace, r) {
sk_sp<SkImage> p3Image = srgbImage->makeColorSpace(p3, SkTransferFunctionBehavior::kIgnore);
SkBitmap p3Bitmap;
bool success = p3Image->asLegacyBitmap(&p3Bitmap);
+
+ auto almost_equal = [](int a, int b) { return SkTAbs(a - b) <= 2; };
+
REPORTER_ASSERT(r, success);
REPORTER_ASSERT(r, almost_equal(0x28, SkGetPackedR32(*p3Bitmap.getAddr32(0, 0))));
REPORTER_ASSERT(r, almost_equal(0x40, SkGetPackedG32(*p3Bitmap.getAddr32(0, 0))));