Create SkColorSpaceXform to handle color conversions

Also adds testing of qcms color correction, so we can compare
SkColorSpaceXform outputs to qcms outputs.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1952063002

Committed: https://skia.googlesource.com/skia/+/740cc88ee3d63c75e52d31238f2a32600cc57a8c

Review-Url: https://codereview.chromium.org/1952063002
diff --git a/dm/DM.cpp b/dm/DM.cpp
index 8ee2ea7..56c3b66 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -724,18 +724,17 @@
         return false;
     }
 
-    // Load the dstSpace.  This particular dst is fairly similar to Adobe RGB.
-    SkAutoTUnref<SkData> data(SkData::NewFromFileName(
-            GetResourcePath("monitor_profiles/HP_ZR30w.icc").c_str()));
-    sk_sp<SkColorSpace> dstSpace = SkColorSpace::NewICC(data->data(), data->size());
-    SkASSERT(dstSpace);
-
     for (auto colorImage : colorImages) {
-        ColorCodecSrc* src = new ColorCodecSrc(colorImage, ColorCodecSrc::kBaseline_Mode, nullptr);
+        ColorCodecSrc* src = new ColorCodecSrc(colorImage, ColorCodecSrc::kBaseline_Mode);
         push_src("image", "color_codec_baseline", src);
 
-        src = new ColorCodecSrc(colorImage, ColorCodecSrc::kDst_HPZR30w_Mode, dstSpace);
+        src = new ColorCodecSrc(colorImage, ColorCodecSrc::kDst_HPZR30w_Mode);
         push_src("image", "color_codec_HPZR30w", src);
+
+#if !defined(GOOGLE3)
+        src = new ColorCodecSrc(colorImage, ColorCodecSrc::kQCMS_HPZR30w_Mode);
+        push_src("image", "color_codec_QCMS_HPZR30w", src);
+#endif
     }
 
     return true;