diff options
author | Mike Klein <mtklein@chromium.org> | 2018-05-10 11:29:15 -0400 |
---|---|---|
committer | Mike Klein <mtklein@chromium.org> | 2018-05-10 18:26:22 +0000 |
commit | ce4cf72e3487f661e53f6d0c3416c9b58da4fd00 (patch) | |
tree | 5e8a5b884c787a095ea25ea93070569731e937a1 /src/codec | |
parent | 024615e9752d93c842ad3cad597fd65382ddb678 (diff) |
non-linear blending first steps
Code:
- Add a non-linear blending bit and makeNonlinearBlending()
to SkColorSpace
- remove enough F16=linear checks to make it possible to
create surfaces and encode pngs with nonlinear F16
Testing:
- add "esrgb" software config to DM, run it
- add "srgbnl" software config, run it
- deemphasize importance of "srgb" config on bots
- update unit tests to reflect relaxed F16 constraints
- add a new unit test file with _really_ basic tests,
and a new unit test that's not working yet
Bug: skia:7942
Change-Id: I8ac042bdf9f3d791765393b68fd9256375184d83
Reviewed-on: https://skia-review.googlesource.com/127325
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/codec')
-rw-r--r-- | src/codec/SkCodec.cpp | 2 | ||||
-rw-r--r-- | src/codec/SkHeifCodec.cpp | 4 | ||||
-rw-r--r-- | src/codec/SkJpegCodec.cpp | 5 | ||||
-rw-r--r-- | src/codec/SkWbmpCodec.cpp | 2 |
4 files changed, 2 insertions, 11 deletions
diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp index 53fa6f4643..f67e6c06d3 100644 --- a/src/codec/SkCodec.cpp +++ b/src/codec/SkCodec.cpp @@ -169,7 +169,7 @@ bool SkCodec::conversionSupported(const SkImageInfo& dst, SkColorType srcColor, case kBGRA_8888_SkColorType: return true; case kRGBA_F16_SkColorType: - return dst.colorSpace() && dst.colorSpace()->gammaIsLinear(); + return dst.colorSpace(); case kRGB_565_SkColorType: return srcIsOpaque; case kGray_8_SkColorType: diff --git a/src/codec/SkHeifCodec.cpp b/src/codec/SkHeifCodec.cpp index 6e82904115..31057a0385 100644 --- a/src/codec/SkHeifCodec.cpp +++ b/src/codec/SkHeifCodec.cpp @@ -192,10 +192,6 @@ bool SkHeifCodec::setOutputColorFormat(const SkImageInfo& dstInfo) { case kRGBA_F16_SkColorType: SkASSERT(this->colorXform()); - - if (!dstInfo.colorSpace()->gammaIsLinear()) { - return false; - } return fHeifDecoder->setOutputColor(kHeifColorFormat_RGBA_8888); default: diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp index 2cc7921277..d44258f9b0 100644 --- a/src/codec/SkJpegCodec.cpp +++ b/src/codec/SkJpegCodec.cpp @@ -433,11 +433,6 @@ bool SkJpegCodec::setOutputColorSpace(const SkImageInfo& dstInfo) { break; case kRGBA_F16_SkColorType: SkASSERT(this->colorXform()); - - if (!dstInfo.colorSpace()->gammaIsLinear()) { - return false; - } - fDecoderMgr->dinfo()->out_color_space = JCS_EXT_RGBA; break; default: diff --git a/src/codec/SkWbmpCodec.cpp b/src/codec/SkWbmpCodec.cpp index d8b10287f6..b5fd591729 100644 --- a/src/codec/SkWbmpCodec.cpp +++ b/src/codec/SkWbmpCodec.cpp @@ -29,7 +29,7 @@ static inline bool valid_color_type(const SkImageInfo& dstInfo) { case kRGB_565_SkColorType: return true; case kRGBA_F16_SkColorType: - return dstInfo.colorSpace() && dstInfo.colorSpace()->gammaIsLinear(); + return dstInfo.colorSpace(); default: return false; } |