Remove sample count from GrSurfaceDesc.

This leaves just width, height, and GrPixelConfig. Once we remove the
latter we can replace GrSurfaceDesc with SkISize.

Also remove unused GrRenderTarget::overrideResolveRect

Also remove GrSurfaceProxy::Renderable and use GrRenderable instead.

Change-Id: I652fe6169a22ca33d199b144ec6385286ac07b5a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228570
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/GrProxyProvider.cpp b/src/gpu/GrProxyProvider.cpp
index d31e3d8..956d55b 100644
--- a/src/gpu/GrProxyProvider.cpp
+++ b/src/gpu/GrProxyProvider.cpp
@@ -115,8 +115,8 @@
 
 #if GR_TEST_UTILS
 sk_sp<GrTextureProxy> GrProxyProvider::testingOnly_createInstantiatedProxy(
-        const GrSurfaceDesc& desc, GrRenderable renderable, GrSurfaceOrigin origin,
-        SkBackingFit fit, SkBudgeted budgeted, GrProtected isProtected) {
+        const GrSurfaceDesc& desc, GrRenderable renderable, int renderTargetSampleCnt,
+        GrSurfaceOrigin origin, SkBackingFit fit, SkBudgeted budgeted, GrProtected isProtected) {
     GrContext* direct = fImageContext->priv().asDirectContext();
     if (!direct) {
         return nullptr;
@@ -126,11 +126,12 @@
     sk_sp<GrTexture> tex;
 
     if (SkBackingFit::kApprox == fit) {
-        tex = resourceProvider->createApproxTexture(desc, renderable, isProtected,
+        tex = resourceProvider->createApproxTexture(desc, renderable, renderTargetSampleCnt,
+                                                    isProtected,
                                                     GrResourceProvider::Flags::kNoPendingIO);
     } else {
-        tex = resourceProvider->createTexture(desc, renderable, budgeted, isProtected,
-                                              GrResourceProvider::Flags::kNoPendingIO);
+        tex = resourceProvider->createTexture(desc, renderable, renderTargetSampleCnt, budgeted,
+                                              isProtected, GrResourceProvider::Flags::kNoPendingIO);
     }
     if (!tex) {
         return nullptr;
@@ -248,21 +249,21 @@
     GrSurfaceDesc desc;
     desc.fWidth = srcImage->width();
     desc.fHeight = srcImage->height();
-    desc.fSampleCnt = sampleCnt;
     desc.fConfig = config;
 
     sk_sp<GrTextureProxy> proxy = this->createLazyProxy(
-            [desc, renderable, budgeted, srcImage, fit](GrResourceProvider* resourceProvider) {
+            [desc, renderable, sampleCnt, budgeted, srcImage,
+             fit](GrResourceProvider* resourceProvider) {
                 SkPixmap pixMap;
                 SkAssertResult(srcImage->peekPixels(&pixMap));
                 GrMipLevel mipLevel = { pixMap.addr(), pixMap.rowBytes() };
 
                 return LazyInstantiationResult(resourceProvider->createTexture(
-                        desc, renderable, budgeted, fit, GrProtected::kNo, mipLevel,
+                        desc, renderable, sampleCnt, budgeted, fit, GrProtected::kNo, mipLevel,
                         GrResourceProvider::Flags::kNoPendingIO));
             },
-            format, desc, renderable, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo, surfaceFlags, fit,
-            budgeted, GrProtected::kNo);
+            format, desc, renderable, sampleCnt, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo,
+            surfaceFlags, fit, budgeted, GrProtected::kNo);
 
     if (!proxy) {
         return nullptr;
@@ -287,6 +288,7 @@
 sk_sp<GrTextureProxy> GrProxyProvider::createMipMapProxy(const GrBackendFormat& format,
                                                          const GrSurfaceDesc& desc,
                                                          GrRenderable renderable,
+                                                         int renderTargetSampleCnt,
                                                          GrSurfaceOrigin origin,
                                                          SkBudgeted budgeted,
                                                          GrProtected isProtected) {
@@ -296,8 +298,8 @@
         return nullptr;
     }
 
-    return this->createProxy(format, desc, renderable, origin, GrMipMapped::kYes,
-                             SkBackingFit::kExact, budgeted, isProtected,
+    return this->createProxy(format, desc, renderable, renderTargetSampleCnt, origin,
+                             GrMipMapped::kYes, SkBackingFit::kExact, budgeted, isProtected,
                              GrInternalSurfaceFlags::kNone);
 }
 
@@ -388,10 +390,10 @@
                 }
 
                 return LazyInstantiationResult(resourceProvider->createTexture(
-                        desc, GrRenderable::kNo, SkBudgeted::kYes, GrProtected::kNo, texels.get(),
-                        mipLevelCount));
+                        desc, GrRenderable::kNo, 1, SkBudgeted::kYes, GrProtected::kNo,
+                        texels.get(), mipLevelCount));
             },
-            format, desc, GrRenderable::kNo, kTopLeft_GrSurfaceOrigin, GrMipMapped::kYes,
+            format, desc, GrRenderable::kNo, 1, kTopLeft_GrSurfaceOrigin, GrMipMapped::kYes,
             SkBackingFit::kExact, SkBudgeted::kYes, GrProtected::kNo);
 
     if (!proxy) {
@@ -437,6 +439,7 @@
 sk_sp<GrTextureProxy> GrProxyProvider::createProxy(const GrBackendFormat& format,
                                                    const GrSurfaceDesc& desc,
                                                    GrRenderable renderable,
+                                                   int renderTargetSampleCnt,
                                                    GrSurfaceOrigin origin,
                                                    GrMipMapped mipMapped,
                                                    SkBackingFit fit,
@@ -462,24 +465,20 @@
         }
     }
 
-    if (!caps->validateSurfaceDesc(desc, renderable, mipMapped)) {
+    if (!caps->validateSurfaceDesc(desc, renderable, renderTargetSampleCnt, mipMapped)) {
         return nullptr;
     }
     GrSurfaceDesc copyDesc = desc;
-    if (renderable == GrRenderable::kYes) {
-        copyDesc.fSampleCnt = caps->getRenderTargetSampleCount(desc.fSampleCnt, colorType, format);
-    }
-
     GrSwizzle texSwizzle = caps->getTextureSwizzle(format, colorType);
-
     if (renderable == GrRenderable::kYes) {
+        renderTargetSampleCnt =
+                caps->getRenderTargetSampleCount(renderTargetSampleCnt, colorType, format);
         // We know anything we instantiate later from this deferred path will be
         // both texturable and renderable
         GrSwizzle outSwizzle = caps->getOutputSwizzle(format, colorType);
-        return sk_sp<GrTextureProxy>(new GrTextureRenderTargetProxy(*caps, format, copyDesc,
-                                                                    origin, mipMapped, texSwizzle,
-                                                                    outSwizzle, fit, budgeted,
-                                                                    isProtected, surfaceFlags));
+        return sk_sp<GrTextureProxy>(new GrTextureRenderTargetProxy(
+                *caps, format, copyDesc, renderTargetSampleCnt, origin, mipMapped, texSwizzle,
+                outSwizzle, fit, budgeted, isProtected, surfaceFlags));
     }
 
     return sk_sp<GrTextureProxy>(new GrTextureProxy(format, copyDesc, origin, mipMapped, texSwizzle,
@@ -505,7 +504,7 @@
                 return LazyInstantiationResult(resourceProvider->createCompressedTexture(
                         width, height, compressionType, budgeted, data.get()));
             },
-            format, desc, GrRenderable::kNo, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo,
+            format, desc, GrRenderable::kNo, 1, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo,
             SkBackingFit::kExact, SkBudgeted::kYes, GrProtected::kNo);
 
     if (!proxy) {
@@ -737,12 +736,14 @@
                                                        const GrBackendFormat& format,
                                                        const GrSurfaceDesc& desc,
                                                        GrRenderable renderable,
+                                                       int renderTargetSampleCnt,
                                                        GrSurfaceOrigin origin,
                                                        GrMipMapped mipMapped,
                                                        SkBackingFit fit,
                                                        SkBudgeted budgeted,
                                                        GrProtected isProtected) {
-    return this->createLazyProxy(std::move(callback), format, desc, renderable, origin, mipMapped,
+    return this->createLazyProxy(std::move(callback), format, desc, renderable,
+                                 renderTargetSampleCnt, origin, mipMapped,
                                  GrInternalSurfaceFlags::kNone, fit, budgeted, isProtected);
 }
 
@@ -750,6 +751,7 @@
                                                        const GrBackendFormat& format,
                                                        const GrSurfaceDesc& desc,
                                                        GrRenderable renderable,
+                                                       int renderTargetSampleCnt,
                                                        GrSurfaceOrigin origin,
                                                        GrMipMapped mipMapped,
                                                        GrInternalSurfaceFlags surfaceFlags,
@@ -759,14 +761,16 @@
     // For non-ddl draws always make lazy proxy's single use.
     LazyInstantiationType lazyType = this->renderingDirectly() ? LazyInstantiationType::kSingleUse
                                                                : LazyInstantiationType::kMultipleUse;
-    return this->createLazyProxy(std::move(callback), format, desc, renderable, origin, mipMapped,
-                                 surfaceFlags, fit, budgeted, isProtected, lazyType);
+    return this->createLazyProxy(std::move(callback), format, desc, renderable,
+                                 renderTargetSampleCnt, origin, mipMapped, surfaceFlags, fit,
+                                 budgeted, isProtected, lazyType);
 }
 
 sk_sp<GrTextureProxy> GrProxyProvider::createLazyProxy(LazyInstantiateCallback&& callback,
                                                        const GrBackendFormat& format,
                                                        const GrSurfaceDesc& desc,
                                                        GrRenderable renderable,
+                                                       int renderTargetSampleCnt,
                                                        GrSurfaceOrigin origin,
                                                        GrMipMapped mipMapped,
                                                        GrInternalSurfaceFlags surfaceFlags,
@@ -791,8 +795,9 @@
     return sk_sp<GrTextureProxy>(
             renderable == GrRenderable::kYes
                     ? new GrTextureRenderTargetProxy(std::move(callback), lazyType, format, desc,
-                                                     origin, mipMapped, texSwizzle, outSwizzle, fit,
-                                                     budgeted, isProtected, surfaceFlags)
+                                                     renderTargetSampleCnt, origin, mipMapped,
+                                                     texSwizzle, outSwizzle, fit, budgeted,
+                                                     isProtected, surfaceFlags)
                     : new GrTextureProxy(std::move(callback), lazyType, format, desc, origin,
                                          mipMapped, texSwizzle, fit, budgeted, isProtected,
                                          surfaceFlags));
@@ -800,9 +805,9 @@
 
 sk_sp<GrRenderTargetProxy> GrProxyProvider::createLazyRenderTargetProxy(
         LazyInstantiateCallback&& callback, const GrBackendFormat& format,
-        const GrSurfaceDesc& desc, GrSurfaceOrigin origin, GrInternalSurfaceFlags surfaceFlags,
-        const TextureInfo* textureInfo, SkBackingFit fit, SkBudgeted budgeted,
-        GrProtected isProtected, bool wrapsVkSecondaryCB) {
+        const GrSurfaceDesc& desc, int sampleCnt, GrSurfaceOrigin origin,
+        GrInternalSurfaceFlags surfaceFlags, const TextureInfo* textureInfo, SkBackingFit fit,
+        SkBudgeted budgeted, GrProtected isProtected, bool wrapsVkSecondaryCB) {
     SkASSERT((desc.fWidth <= 0 && desc.fHeight <= 0) ||
              (desc.fWidth > 0 && desc.fHeight > 0));
 
@@ -827,41 +832,43 @@
         // actual VkImage to texture from.
         SkASSERT(!wrapsVkSecondaryCB);
         return sk_sp<GrRenderTargetProxy>(new GrTextureRenderTargetProxy(
-                std::move(callback), lazyType, format, desc, origin, textureInfo->fMipMapped,
-                texSwizzle, outSwizzle, fit, budgeted, isProtected, surfaceFlags));
+                std::move(callback), lazyType, format, desc, sampleCnt, origin,
+                textureInfo->fMipMapped, texSwizzle, outSwizzle, fit, budgeted, isProtected,
+                surfaceFlags));
     }
 
     GrRenderTargetProxy::WrapsVkSecondaryCB vkSCB =
             wrapsVkSecondaryCB ? GrRenderTargetProxy::WrapsVkSecondaryCB::kYes
                                : GrRenderTargetProxy::WrapsVkSecondaryCB::kNo;
 
-    return sk_sp<GrRenderTargetProxy>(
-            new GrRenderTargetProxy(std::move(callback), lazyType, format, desc, origin, texSwizzle,
-                                    outSwizzle, fit, budgeted, isProtected, surfaceFlags, vkSCB));
+    return sk_sp<GrRenderTargetProxy>(new GrRenderTargetProxy(
+            std::move(callback), lazyType, format, desc, sampleCnt, origin, texSwizzle, outSwizzle,
+            fit, budgeted, isProtected, surfaceFlags, vkSCB));
 }
 
 sk_sp<GrTextureProxy> GrProxyProvider::MakeFullyLazyProxy(
-        LazyInstantiateCallback&& callback, const GrBackendFormat& format, Renderable renderable,
-        GrProtected isProtected, GrSurfaceOrigin origin, GrPixelConfig config, const GrCaps& caps,
-        int sampleCnt) {
+        LazyInstantiateCallback&& callback, const GrBackendFormat& format, GrRenderable renderable,
+        int renderTargetSampleCnt, GrProtected isProtected, GrSurfaceOrigin origin,
+        GrPixelConfig config, const GrCaps& caps) {
+    SkASSERT(renderTargetSampleCnt == 1 || renderable == GrRenderable::kYes);
     SkASSERT(validate_backend_format_and_config(&caps, format, config));
     GrSurfaceDesc desc;
     GrInternalSurfaceFlags surfaceFlags = GrInternalSurfaceFlags::kNone;
     desc.fWidth = -1;
     desc.fHeight = -1;
     desc.fConfig = config;
-    desc.fSampleCnt = sampleCnt;
 
     GrColorType colorType = GrPixelConfigToColorType(desc.fConfig);
     GrSwizzle texSwizzle = caps.getTextureSwizzle(format, colorType);
     GrSwizzle outSwizzle = caps.getOutputSwizzle(format, colorType);
 
     return sk_sp<GrTextureProxy>(
-            (Renderable::kYes == renderable)
+            (GrRenderable::kYes == renderable)
                     ? new GrTextureRenderTargetProxy(
                               std::move(callback), LazyInstantiationType::kSingleUse, format, desc,
-                              origin, GrMipMapped::kNo, texSwizzle, outSwizzle,
-                              SkBackingFit::kApprox, SkBudgeted::kYes, isProtected, surfaceFlags)
+                              renderTargetSampleCnt, origin, GrMipMapped::kNo, texSwizzle,
+                              outSwizzle, SkBackingFit::kApprox, SkBudgeted::kYes, isProtected,
+                              surfaceFlags)
                     : new GrTextureProxy(std::move(callback), LazyInstantiationType::kSingleUse,
                                          format, desc, origin, GrMipMapped::kNo, texSwizzle,
                                          SkBackingFit::kApprox, SkBudgeted::kYes, isProtected,