Dest color space no longer impacts mipmaps or texture sampling

PS5: Removes SkDestinationSurfaceColorMode, tracking of mipmap
mode on GrTexture, sRGB decode state per-texture. Because we
were often choosing sRGB configs for RGB color types, legacy
rendering would then be incorrect (too dark). So...

PS7: Stops ever using sRGB pixel configs when translating
image info or color type. Also removes a bunch of GrCaps bits
and a GrContextOption that are no longer relevant.

PS9: Adjusts surface creation unit test expectations, and
changes the raster rules accordingly.

At this point, sRGB configs are (obviously) going to be broken.

Locally, I ran 8888, gl, and the gbr- versions of both. Across
all GMs x configs, there are 13 diffs. 12 are GMs that create
surfaces with a color-space attached (and thus, the offscreen
is no longer getting sRGB pixel config). The only remainder
constructs an SkPictureImageGenerator, (with an attached color
space) and renders it to the gbr-gl canvas, which triggers a
a tagged surface inside the generator.

Bug: skia:
Change-Id: Ie5edfa157dd799f3121e8173fc4f97f6c8ed6789
Reviewed-on: https://skia-review.googlesource.com/131282
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/tools/DDLPromiseImageHelper.cpp b/tools/DDLPromiseImageHelper.cpp
index 43a2546..586c233 100644
--- a/tools/DDLPromiseImageHelper.cpp
+++ b/tools/DDLPromiseImageHelper.cpp
@@ -57,7 +57,6 @@
                                                             info.fBitmap.width(),
                                                             info.fBitmap.height(),
                                                             info.fBitmap.colorType(),
-                                                            info.fBitmap.colorSpace(),
                                                             false, GrMipMapped::kNo));
         // The GMs sometimes request too large an image
         //SkAssertResult(callbackContext->backendTexture().isValid());
diff --git a/tools/fiddle/fiddle_main.cpp b/tools/fiddle/fiddle_main.cpp
index f000025..526e314 100644
--- a/tools/fiddle/fiddle_main.cpp
+++ b/tools/fiddle/fiddle_main.cpp
@@ -164,8 +164,7 @@
         }
 
         backingTexture = resourceProvider->createTexture(backingDesc, SkBudgeted::kNo, texels.get(),
-                                                         mipLevelCount,
-                                                         SkDestinationSurfaceColorMode::kLegacy);
+                                                         mipLevelCount);
         if (!backingTexture) {
             return false;
         }
@@ -191,8 +190,8 @@
         // We use this fact to initialize it with data but don't allow mipmaps
         GrMipLevel level0 = { data.get(), backingDesc.fWidth*sizeof(uint32_t) };
 
-        sk_sp<GrTexture> tmp = resourceProvider->createTexture(
-                backingDesc, SkBudgeted::kNo, &level0, 1, SkDestinationSurfaceColorMode::kLegacy);
+        sk_sp<GrTexture> tmp = resourceProvider->createTexture(backingDesc, SkBudgeted::kNo,
+                                                               &level0, 1);
         if (!tmp || !tmp->asRenderTarget()) {
             return false;
         }
@@ -219,9 +218,8 @@
             texels[i].fRowBytes = 0;
         }
 
-        backingTextureRenderTarget = resourceProvider->createTexture(
-                backingDesc, SkBudgeted::kNo, texels.get(), mipLevelCount,
-                SkDestinationSurfaceColorMode::kLegacy);
+        backingTextureRenderTarget = resourceProvider->createTexture(backingDesc, SkBudgeted::kNo,
+                                                                     texels.get(), mipLevelCount);
         if (!backingTextureRenderTarget || !backingTextureRenderTarget->asRenderTarget()) {
             return false;
         }
diff --git a/tools/flags/SkCommonFlagsConfig.cpp b/tools/flags/SkCommonFlagsConfig.cpp
index ba07ec8..0b7a746 100644
--- a/tools/flags/SkCommonFlagsConfig.cpp
+++ b/tools/flags/SkCommonFlagsConfig.cpp
@@ -430,17 +430,6 @@
         // samples and we couldn't test the mixed samples backend for simple shapes.
         fContextOverrides |= ContextOverrides::kDisableNVPR;
     }
-    // Subtle logic: If the config has a color space attached, we're going to be rendering to sRGB,
-    // so we need that capability. In addition, to get the widest test coverage, we DO NOT require
-    // that we can disable sRGB decode. (That's for rendering sRGB sources to legacy surfaces).
-    //
-    // If the config doesn't have a color space attached, we're going to be rendering in legacy
-    // mode. In that case, we don't require sRGB capability and we defer to the client to decide on
-    // sRGB decode control.
-    if (fColorSpace) {
-        fContextOverrides |= ContextOverrides::kRequireSRGBSupport;
-        fContextOverrides |= ContextOverrides::kAllowSRGBWithoutDecodeControl;
-    }
     if (!useStencilBuffers) {
         fContextOverrides |= ContextOverrides::kAvoidStencilBuffers;
     }
diff --git a/tools/gpu/GrContextFactory.cpp b/tools/gpu/GrContextFactory.cpp
index 2bfccd9..54f4742 100644
--- a/tools/gpu/GrContextFactory.cpp
+++ b/tools/gpu/GrContextFactory.cpp
@@ -261,9 +261,6 @@
     if (ContextOverrides::kDisableNVPR & overrides) {
         grOptions.fSuppressPathRendering = true;
     }
-    if (ContextOverrides::kAllowSRGBWithoutDecodeControl & overrides) {
-        grOptions.fRequireDecodeDisableForSRGB = false;
-    }
     if (ContextOverrides::kAvoidStencilBuffers & overrides) {
         grOptions.fAvoidStencilBuffers = true;
     }
@@ -280,11 +277,6 @@
             return ContextInfo();
         }
     }
-    if (ContextOverrides::kRequireSRGBSupport & overrides) {
-        if (!grCtx->contextPriv().caps()->srgbSupport()) {
-            return ContextInfo();
-        }
-    }
 
     // We must always add new contexts by pushing to the back so that when we delete them we delete
     // them in reverse order in which they were made.
diff --git a/tools/gpu/GrContextFactory.h b/tools/gpu/GrContextFactory.h
index 5f16ea8..471e3fd 100644
--- a/tools/gpu/GrContextFactory.h
+++ b/tools/gpu/GrContextFactory.h
@@ -56,11 +56,9 @@
     enum class ContextOverrides {
         kNone                          = 0x0,
         kDisableNVPR                   = 0x1,
-        kAllowSRGBWithoutDecodeControl = 0x2,
-        kAvoidStencilBuffers           = 0x4,
+        kAvoidStencilBuffers           = 0x2,
 
-        kRequireNVPRSupport            = 0x8,
-        kRequireSRGBSupport            = 0x10,
+        kRequireNVPRSupport            = 0x4,
     };
 
     static bool IsRenderingContext(ContextType type) {
diff --git a/tools/gpu/GrTest.cpp b/tools/gpu/GrTest.cpp
index f3630ff..14ba7a0 100644
--- a/tools/gpu/GrTest.cpp
+++ b/tools/gpu/GrTest.cpp
@@ -165,10 +165,9 @@
 #endif
 
 GrBackendTexture GrGpu::createTestingOnlyBackendTexture(const void* pixels, int w, int h,
-                                                        SkColorType colorType,
-                                                        SkColorSpace* cs, bool isRenderTarget,
+                                                        SkColorType colorType, bool isRenderTarget,
                                                         GrMipMapped mipMapped) {
-    GrPixelConfig config = SkImageInfo2GrPixelConfig(colorType, cs, *this->caps());
+    GrPixelConfig config = SkColorType2GrPixelConfig(colorType);
     if (kUnknown_GrPixelConfig == config) {
         return GrBackendTexture();
     }
diff --git a/tools/sk_app/VulkanWindowContext.cpp b/tools/sk_app/VulkanWindowContext.cpp
index c145fd2..ad0e15c 100644
--- a/tools/sk_app/VulkanWindowContext.cpp
+++ b/tools/sk_app/VulkanWindowContext.cpp
@@ -182,12 +182,9 @@
     // Pick our surface format. For now, just make sure it matches our sRGB request:
     VkFormat surfaceFormat = VK_FORMAT_UNDEFINED;
     VkColorSpaceKHR colorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR;
-    auto srgbColorSpace = SkColorSpace::MakeSRGB();
-    bool wantSRGB = srgbColorSpace == params.fColorSpace;
     for (uint32_t i = 0; i < surfaceFormatCount; ++i) {
         VkFormat localFormat = surfaceFormats[i].format;
-        if (GrVkFormatIsSupported(localFormat) &&
-            GrVkFormatIsSRGB(localFormat, nullptr) == wantSRGB) {
+        if (GrVkFormatIsSupported(localFormat)) {
             surfaceFormat = localFormat;
             colorSpace = surfaceFormats[i].colorSpace;
             break;
diff --git a/tools/skpbench/skpbench.cpp b/tools/skpbench/skpbench.cpp
index a4583ce..5f5e96b 100644
--- a/tools/skpbench/skpbench.cpp
+++ b/tools/skpbench/skpbench.cpp
@@ -381,8 +381,7 @@
         exitf(ExitErr::kUnavailable, "render target size %ix%i not supported by platform (max: %i)",
               width, height, ctx->maxRenderTargetSize());
     }
-    GrPixelConfig grPixConfig = SkImageInfo2GrPixelConfig(
-            config->getColorType(), config->getColorSpace(), *ctx->contextPriv().caps());
+    GrPixelConfig grPixConfig = SkColorType2GrPixelConfig(config->getColorType());
     if (kUnknown_GrPixelConfig == grPixConfig) {
         exitf(ExitErr::kUnavailable, "failed to get GrPixelConfig from SkColorType: %d",
                                      config->getColorType());