Add color correction benchmark - with comparison to qcms

--colorImages is empty by default so this won't affect the runtime of
the bots.  To run locally, use --colorImages <path> and
--benchType skcolorcodec.

Two takeaways so far:
Color correction is (currently) slower than jpeg decodes.
Our reference solution is slower than qcms.

TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2035793002

Review-Url: https://codereview.chromium.org/2035793002
diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp
index 55ef34e..a7e9ebb 100644
--- a/bench/nanobench.cpp
+++ b/bench/nanobench.cpp
@@ -14,6 +14,7 @@
 #include "BitmapRegionDecoderBench.h"
 #include "CodecBench.h"
 #include "CodecBenchPriv.h"
+#include "ColorCodecBench.h"
 #include "CrashHandler.h"
 #include "GMBench.h"
 #include "ProcStats.h"
@@ -558,6 +559,7 @@
                       , fCurrentCodec(0)
                       , fCurrentAndroidCodec(0)
                       , fCurrentBRDImage(0)
+                      , fCurrentColorImage(0)
                       , fCurrentColorType(0)
                       , fCurrentAlphaType(0)
                       , fCurrentSubsetType(0)
@@ -602,6 +604,9 @@
         if (!CollectImages(FLAGS_images, &fImages)) {
             exit(1);
         }
+        if (!CollectImages(FLAGS_colorImages, &fColorImages)) {
+            exit(1);
+        }
 
         // Choose the candidate color types for image decoding
         const SkColorType colorTypes[] =
@@ -917,6 +922,20 @@
             fCurrentColorType = 0;
         }
 
+        while (fCurrentColorImage < fColorImages.count()) {
+            fSourceType = "colorimage";
+            fBenchType = "skcolorcodec";
+            const SkString& path = fColorImages[fCurrentColorImage];
+            fCurrentColorImage++;
+            sk_sp<SkData> encoded = SkData::MakeFromFileName(path.c_str());
+            if (encoded) {
+                return new ColorCodecBench(SkOSPath::Basename(path.c_str()).c_str(),
+                                           std::move(encoded));
+            } else {
+                SkDebugf("Could not read file %s.\n", path.c_str());
+            }
+        }
+
         return nullptr;
     }
 
@@ -960,6 +979,7 @@
     SkTArray<SkString> fSKPs;
     SkTArray<bool>     fUseMPDs;
     SkTArray<SkString> fImages;
+    SkTArray<SkString> fColorImages;
     SkTArray<SkColorType, true> fColorTypes;
     SkScalar           fZoomMax;
     double             fZoomPeriodMs;
@@ -975,6 +995,7 @@
     int fCurrentCodec;
     int fCurrentAndroidCodec;
     int fCurrentBRDImage;
+    int fCurrentColorImage;
     int fCurrentColorType;
     int fCurrentAlphaType;
     int fCurrentSubsetType;