aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/codec
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2018-05-10 11:29:15 -0400
committerGravatar Mike Klein <mtklein@chromium.org>2018-05-10 18:26:22 +0000
commitce4cf72e3487f661e53f6d0c3416c9b58da4fd00 (patch)
tree5e8a5b884c787a095ea25ea93070569731e937a1 /src/codec
parent024615e9752d93c842ad3cad597fd65382ddb678 (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.cpp2
-rw-r--r--src/codec/SkHeifCodec.cpp4
-rw-r--r--src/codec/SkJpegCodec.cpp5
-rw-r--r--src/codec/SkWbmpCodec.cpp2
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;
}