Support encoding/decoding F16 without a color space

Change encode-srgb-* to exercise this code. The encoders
handle this just fine, so just remove those checks. The
decoders still rely on having a color space, so detect
and fix this inside SkCodec. Eventually I'd like to get
rid of the swizzler, use skcms for all format conversion,
etc... but that's a really big change, and this will let
us land other changes without breaking layout tests.

Bug: skia:8382
Change-Id: I8d85bf44ee3a287ad295515a745ded2ff5051417
Reviewed-on: https://skia-review.googlesource.com/156627
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/gm/encode-srgb.cpp b/gm/encode-srgb.cpp
index 050b157..35da199 100644
--- a/gm/encode-srgb.cpp
+++ b/gm/encode-srgb.cpp
@@ -42,9 +42,6 @@
 
     sk_sp<SkData> data = GetResourceAsData(resource);
     std::unique_ptr<SkCodec> codec = SkCodec::MakeFromData(data);
-    if (kRGBA_F16_SkColorType == colorType && !colorSpace) {
-        colorSpace = SkColorSpace::MakeSRGB();
-    }
     SkImageInfo dstInfo = codec->getInfo().makeColorType(colorType)
                                           .makeAlphaType(alphaType)
                                           .makeColorSpace(colorSpace);
diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp
index ecf253f..929cc6e 100644
--- a/src/codec/SkCodec.cpp
+++ b/src/codec/SkCodec.cpp
@@ -299,8 +299,13 @@
         ? kSuccess : kInvalidConversion;
 }
 
-SkCodec::Result SkCodec::getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes,
+SkCodec::Result SkCodec::getPixels(const SkImageInfo& dstInfo, void* pixels, size_t rowBytes,
                                    const Options* options) {
+    SkImageInfo info = dstInfo;
+    if (!info.colorSpace()) {
+        info = info.makeColorSpace(SkColorSpace::MakeSRGB());
+    }
+
     if (kUnknown_SkColorType == info.colorType()) {
         return kInvalidConversion;
     }
diff --git a/src/images/SkJpegEncoder.cpp b/src/images/SkJpegEncoder.cpp
index 1c1fb15..239f9d8 100644
--- a/src/images/SkJpegEncoder.cpp
+++ b/src/images/SkJpegEncoder.cpp
@@ -110,10 +110,6 @@
             numComponents = 1;
             break;
         case kRGBA_F16_SkColorType:
-            if (!srcInfo.colorSpace()) {
-                return false;
-            }
-
             if (kUnpremul_SkAlphaType != srcInfo.alphaType() ||
                 SkJpegEncoder::AlphaOption::kIgnore == options.fAlphaOption)
             {
diff --git a/src/images/SkPngEncoder.cpp b/src/images/SkPngEncoder.cpp
index 0ca2551..685e611 100644
--- a/src/images/SkPngEncoder.cpp
+++ b/src/images/SkPngEncoder.cpp
@@ -107,7 +107,6 @@
     switch (srcInfo.colorType()) {
         case kRGBA_F16_SkColorType:
         case kRGBA_F32_SkColorType:
-            SkASSERT(srcInfo.colorSpace());
             sigBit.red = 16;
             sigBit.green = 16;
             sigBit.blue = 16;