Renable image benchmarking

- Remove --images '' to renable image benchmarking
- Add a flag to disable testing JPEG's buildTileIndex, since it also leaks memory
- Do not run images on GPU
- Do not run large interlaced images on 32 bit bots
- When buildTileIndex is not being used in the subset benches, do not use it for BRD

BUG=skia:3418
BUG=skia:4469
BUG=skia:4471
BUG=skia:4360

Review URL: https://codereview.chromium.org/1396113002
diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp
index a48e963..38f554d 100644
--- a/bench/nanobench.cpp
+++ b/bench/nanobench.cpp
@@ -112,6 +112,7 @@
 DEFINE_bool(resetGpuContext, true, "Reset the GrContext before running each test.");
 DEFINE_bool(gpuStats, false, "Print GPU stats after each gpu benchmark?");
 DEFINE_bool(pngBuildTileIndex, false, "If supported, use png buildTileIndex/decodeSubset.");
+DEFINE_bool(jpgBuildTileIndex, false, "If supported, use jpg buildTileIndex/decodeSubset.");
 
 static SkString humanize(double ms) {
     if (FLAGS_verbose) return SkStringPrintf("%llu", (uint64_t)(ms*1e6));
@@ -513,9 +514,11 @@
         "JPG", "JPEG",
     };
 
-    for (uint32_t i = 0; i < SK_ARRAY_COUNT(exts); i++) {
-        if (path.endsWith(exts[i])) {
-            return true;
+    if (useCodec || FLAGS_jpgBuildTileIndex) {
+        for (uint32_t i = 0; i < SK_ARRAY_COUNT(exts); i++) {
+            if (path.endsWith(exts[i])) {
+                return true;
+            }
         }
     }
 
@@ -983,12 +986,34 @@
             while (fCurrentBRDStrategy < (int) SK_ARRAY_COUNT(strategies)) {
                 fSourceType = "image";
                 fBenchType = strategies[fCurrentBRDStrategy].fName;
+
+                const SkString& path = fImages[fCurrentBRDImage];
+                const SkBitmapRegionDecoderInterface::Strategy strategy =
+                        strategies[fCurrentBRDStrategy].fStrategy;
+
+                if (SkBitmapRegionDecoderInterface::kOriginal_Strategy == strategy) {
+                    // Disable png and jpeg for SkImageDecoder:
+                    if (!FLAGS_jpgBuildTileIndex) {
+                        if (path.endsWith("JPEG") || path.endsWith("JPG") ||
+                            path.endsWith("jpeg") || path.endsWith("jpg"))
+                        {
+                            fCurrentBRDStrategy++;
+                            continue;
+                        }
+                    }
+                    if (!FLAGS_pngBuildTileIndex) {
+                        if (path.endsWith("PNG") || path.endsWith("png")) {
+                            fCurrentBRDStrategy++;
+                            continue;
+                        }
+                    }
+                }
+
                 while (fCurrentColorType < fColorTypes.count()) {
                     while (fCurrentBRDSampleSize < (int) SK_ARRAY_COUNT(sampleSizes)) {
                         while (fCurrentSubsetType <= kLastSingle_SubsetType) {
-                            const SkString& path = fImages[fCurrentBRDImage];
-                            const SkBitmapRegionDecoderInterface::Strategy strategy =
-                                    strategies[fCurrentBRDStrategy].fStrategy;
+
+
                             SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(path.c_str()));
                             const SkColorType colorType = fColorTypes[fCurrentColorType];
                             uint32_t sampleSize = sampleSizes[fCurrentBRDSampleSize];