Use GrBackendObjectOwnership instead of GrVkImage::Wrapped

This is more in line with what GL does and will make things cleaner for
the metal backend as well.

Bug: skia:
Change-Id: I0ba0c588f813ad78051251c1cb9e8f92fd917ecc
Reviewed-on: https://skia-review.googlesource.com/35940
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/vk/GrVkImage.h b/src/gpu/vk/GrVkImage.h
index 57ab18a..b71ed49 100644
--- a/src/gpu/vk/GrVkImage.h
+++ b/src/gpu/vk/GrVkImage.h
@@ -23,16 +23,10 @@
     class Resource;
 
 public:
-    enum Wrapped {
-        kNot_Wrapped,
-        kAdopted_Wrapped,
-        kBorrowed_Wrapped,
-    };
-
-    GrVkImage(const GrVkImageInfo& info, Wrapped wrapped)
+    GrVkImage(const GrVkImageInfo& info, GrBackendObjectOwnership ownership)
         : fInfo(info)
-        , fIsBorrowed(kBorrowed_Wrapped == wrapped) {
-        if (kBorrowed_Wrapped == wrapped) {
+        , fIsBorrowed(GrBackendObjectOwnership::kBorrowed == ownership) {
+        if (fIsBorrowed) {
             fResource = new BorrowedResource(info.fImage, info.fAlloc, info.fImageTiling);
         } else {
             fResource = new Resource(info.fImage, info.fAlloc, info.fImageTiling);
diff --git a/src/gpu/vk/GrVkRenderTarget.cpp b/src/gpu/vk/GrVkRenderTarget.cpp
index d5719fd..27cb119 100644
--- a/src/gpu/vk/GrVkRenderTarget.cpp
+++ b/src/gpu/vk/GrVkRenderTarget.cpp
@@ -28,13 +28,13 @@
                                    const GrVkImageInfo& msaaInfo,
                                    const GrVkImageView* colorAttachmentView,
                                    const GrVkImageView* resolveAttachmentView,
-                                   GrVkImage::Wrapped wrapped)
+                                   GrBackendObjectOwnership ownership)
     : GrSurface(gpu, desc)
-    , GrVkImage(info, wrapped)
+    , GrVkImage(info, ownership)
     // for the moment we only support 1:1 color to stencil
     , GrRenderTarget(gpu, desc)
     , fColorAttachmentView(colorAttachmentView)
-    , fMSAAImage(new GrVkImage(msaaInfo, GrVkImage::kNot_Wrapped))
+    , fMSAAImage(new GrVkImage(msaaInfo, GrBackendObjectOwnership::kOwned))
     , fResolveAttachmentView(resolveAttachmentView)
     , fFramebuffer(nullptr)
     , fCachedSimpleRenderPass(nullptr) {
@@ -51,13 +51,13 @@
                                    const GrVkImageInfo& msaaInfo,
                                    const GrVkImageView* colorAttachmentView,
                                    const GrVkImageView* resolveAttachmentView,
-                                   GrVkImage::Wrapped wrapped)
+                                   GrBackendObjectOwnership ownership)
     : GrSurface(gpu, desc)
-    , GrVkImage(info, wrapped)
+    , GrVkImage(info, ownership)
     // for the moment we only support 1:1 color to stencil
     , GrRenderTarget(gpu, desc)
     , fColorAttachmentView(colorAttachmentView)
-    , fMSAAImage(new GrVkImage(msaaInfo, GrVkImage::kNot_Wrapped))
+    , fMSAAImage(new GrVkImage(msaaInfo, GrBackendObjectOwnership::kOwned))
     , fResolveAttachmentView(resolveAttachmentView)
     , fFramebuffer(nullptr)
     , fCachedSimpleRenderPass(nullptr) {
@@ -72,9 +72,9 @@
                                    const GrSurfaceDesc& desc,
                                    const GrVkImageInfo& info,
                                    const GrVkImageView* colorAttachmentView,
-                                   GrVkImage::Wrapped wrapped)
+                                   GrBackendObjectOwnership ownership)
     : GrSurface(gpu, desc)
-    , GrVkImage(info, wrapped)
+    , GrVkImage(info, ownership)
     , GrRenderTarget(gpu, desc)
     , fColorAttachmentView(colorAttachmentView)
     , fMSAAImage(nullptr)
@@ -92,9 +92,9 @@
                                    const GrSurfaceDesc& desc,
                                    const GrVkImageInfo& info,
                                    const GrVkImageView* colorAttachmentView,
-                                   GrVkImage::Wrapped wrapped)
+                                   GrBackendObjectOwnership ownership)
     : GrSurface(gpu, desc)
-    , GrVkImage(info, wrapped)
+    , GrVkImage(info, ownership)
     , GrRenderTarget(gpu, desc)
     , fColorAttachmentView(colorAttachmentView)
     , fMSAAImage(nullptr)
@@ -110,7 +110,7 @@
                          SkBudgeted budgeted,
                          const GrSurfaceDesc& desc,
                          const GrVkImageInfo& info,
-                         GrVkImage::Wrapped wrapped) {
+                         GrBackendObjectOwnership ownership) {
     SkASSERT(1 == info.fLevelCount);
     VkFormat pixelFormat;
     GrPixelConfigToVkFormat(desc.fConfig, &pixelFormat);
@@ -167,9 +167,9 @@
     GrVkRenderTarget* texRT;
     if (desc.fSampleCnt) {
         texRT = new GrVkRenderTarget(gpu, budgeted, desc, info, msInfo,
-                                     colorAttachmentView, resolveAttachmentView, wrapped);
+                                     colorAttachmentView, resolveAttachmentView, ownership);
     } else {
-        texRT = new GrVkRenderTarget(gpu, budgeted, desc, info, colorAttachmentView, wrapped);
+        texRT = new GrVkRenderTarget(gpu, budgeted, desc, info, colorAttachmentView, ownership);
     }
 
     return texRT;
@@ -188,7 +188,7 @@
     }
 
     GrVkRenderTarget* rt = GrVkRenderTarget::Create(gpu, budgeted, desc, info,
-                                                    GrVkImage::kNot_Wrapped);
+                                                    GrBackendObjectOwnership::kOwned);
     if (!rt) {
         GrVkImage::DestroyImageInfo(gpu, &info);
     }
@@ -203,7 +203,8 @@
     SkASSERT(VK_NULL_HANDLE != info->fImage);
 
     return sk_sp<GrVkRenderTarget>(
-        GrVkRenderTarget::Create(gpu, SkBudgeted::kNo, desc, *info, GrVkImage::kBorrowed_Wrapped));
+        GrVkRenderTarget::Create(gpu, SkBudgeted::kNo, desc, *info,
+                                 GrBackendObjectOwnership::kBorrowed));
 }
 
 bool GrVkRenderTarget::completeStencilAttachment() {
diff --git a/src/gpu/vk/GrVkRenderTarget.h b/src/gpu/vk/GrVkRenderTarget.h
index 272998e..eeb8a1a 100644
--- a/src/gpu/vk/GrVkRenderTarget.h
+++ b/src/gpu/vk/GrVkRenderTarget.h
@@ -83,13 +83,13 @@
                      const GrVkImageInfo& msaaInfo,
                      const GrVkImageView* colorAttachmentView,
                      const GrVkImageView* resolveAttachmentView,
-                     GrVkImage::Wrapped wrapped);
+                     GrBackendObjectOwnership);
 
     GrVkRenderTarget(GrVkGpu* gpu,
                      const GrSurfaceDesc& desc,
                      const GrVkImageInfo& info,
                      const GrVkImageView* colorAttachmentView,
-                     GrVkImage::Wrapped wrapped);
+                     GrBackendObjectOwnership);
 
     GrVkGpu* getVkGpu() const;
 
@@ -119,17 +119,17 @@
                      const GrVkImageInfo& msaaInfo,
                      const GrVkImageView* colorAttachmentView,
                      const GrVkImageView* resolveAttachmentView,
-                     GrVkImage::Wrapped wrapped);
+                     GrBackendObjectOwnership);
 
     GrVkRenderTarget(GrVkGpu* gpu,
                      SkBudgeted,
                      const GrSurfaceDesc& desc,
                      const GrVkImageInfo& info,
                      const GrVkImageView* colorAttachmentView,
-                     GrVkImage::Wrapped wrapped);
+                     GrBackendObjectOwnership);
 
     static GrVkRenderTarget* Create(GrVkGpu*, SkBudgeted, const GrSurfaceDesc&,
-                                    const GrVkImageInfo&, GrVkImage::Wrapped wrapped);
+                                    const GrVkImageInfo&, GrBackendObjectOwnership);
 
     bool completeStencilAttachment() override;
 
diff --git a/src/gpu/vk/GrVkStencilAttachment.cpp b/src/gpu/vk/GrVkStencilAttachment.cpp
index 8e5940d..5348885 100644
--- a/src/gpu/vk/GrVkStencilAttachment.cpp
+++ b/src/gpu/vk/GrVkStencilAttachment.cpp
@@ -19,7 +19,7 @@
                                              const GrVkImageInfo& info,
                                              const GrVkImageView* stencilView)
     : GrStencilAttachment(gpu, desc.fWidth, desc.fHeight, format.fStencilBits, desc.fSamples)
-    , GrVkImage(info, GrVkImage::kNot_Wrapped)
+    , GrVkImage(info, GrBackendObjectOwnership::kOwned)
     , fFormat(format)
     , fStencilView(stencilView) {
     this->registerWithCache(SkBudgeted::kYes);
diff --git a/src/gpu/vk/GrVkTexture.cpp b/src/gpu/vk/GrVkTexture.cpp
index 2b1655f..f88cec5 100644
--- a/src/gpu/vk/GrVkTexture.cpp
+++ b/src/gpu/vk/GrVkTexture.cpp
@@ -32,7 +32,7 @@
                          const GrVkImageInfo& info,
                          const GrVkImageView* view)
     : GrSurface(gpu, desc)
-    , GrVkImage(info, GrVkImage::kNot_Wrapped)
+    , GrVkImage(info, GrBackendObjectOwnership::kOwned)
     , INHERITED(gpu, desc, kTexture2DSampler_GrSLType, highest_filter_mode(desc.fConfig),
                 info.fLevelCount > 1)
     , fTextureView(view)
@@ -45,9 +45,9 @@
                          const GrSurfaceDesc& desc,
                          const GrVkImageInfo& info,
                          const GrVkImageView* view,
-                         GrVkImage::Wrapped wrapped)
+                         GrBackendObjectOwnership ownership)
     : GrSurface(gpu, desc)
-    , GrVkImage(info, wrapped)
+    , GrVkImage(info, ownership)
     , INHERITED(gpu, desc, kTexture2DSampler_GrSLType, highest_filter_mode(desc.fConfig),
                 info.fLevelCount > 1)
     , fTextureView(view)
@@ -60,9 +60,9 @@
                          const GrSurfaceDesc& desc,
                          const GrVkImageInfo& info,
                          const GrVkImageView* view,
-                         GrVkImage::Wrapped wrapped)
+                         GrBackendObjectOwnership ownership)
     : GrSurface(gpu, desc)
-    , GrVkImage(info, wrapped)
+    , GrVkImage(info, ownership)
     , INHERITED(gpu, desc, kTexture2DSampler_GrSLType, highest_filter_mode(desc.fConfig),
                 info.fLevelCount > 1)
     , fTextureView(view)
@@ -92,7 +92,7 @@
 
 sk_sp<GrVkTexture> GrVkTexture::MakeWrappedTexture(GrVkGpu* gpu,
                                                    const GrSurfaceDesc& desc,
-                                                   GrWrapOwnership ownership,
+                                                   GrWrapOwnership wrapOwnership,
                                                    const GrVkImageInfo* info) {
     SkASSERT(info);
     // Wrapped textures require both image and allocation (because they can be mapped)
@@ -105,9 +105,9 @@
         return nullptr;
     }
 
-    GrVkImage::Wrapped wrapped = kBorrow_GrWrapOwnership == ownership
-            ? GrVkImage::kBorrowed_Wrapped : GrVkImage::kAdopted_Wrapped;
-    return sk_sp<GrVkTexture>(new GrVkTexture(gpu, kWrapped, desc, *info, imageView, wrapped));
+    GrBackendObjectOwnership ownership = kBorrow_GrWrapOwnership == wrapOwnership
+            ? GrBackendObjectOwnership::kBorrowed : GrBackendObjectOwnership::kOwned;
+    return sk_sp<GrVkTexture>(new GrVkTexture(gpu, kWrapped, desc, *info, imageView, ownership));
 }
 
 GrVkTexture::~GrVkTexture() {
diff --git a/src/gpu/vk/GrVkTexture.h b/src/gpu/vk/GrVkTexture.h
index 239f6b3..40d778f 100644
--- a/src/gpu/vk/GrVkTexture.h
+++ b/src/gpu/vk/GrVkTexture.h
@@ -42,7 +42,7 @@
 
 protected:
     GrVkTexture(GrVkGpu*, const GrSurfaceDesc&, const GrVkImageInfo&, const GrVkImageView*,
-                GrVkImage::Wrapped wrapped);
+                GrBackendObjectOwnership);
 
     GrVkGpu* getVkGpu() const;
 
@@ -54,7 +54,7 @@
     GrVkTexture(GrVkGpu*, SkBudgeted, const GrSurfaceDesc&,
                 const GrVkImageInfo&, const GrVkImageView* imageView);
     GrVkTexture(GrVkGpu*, Wrapped, const GrSurfaceDesc&,
-                const GrVkImageInfo&, const GrVkImageView* imageView, GrVkImage::Wrapped wrapped);
+                const GrVkImageInfo&, const GrVkImageView* imageView, GrBackendObjectOwnership);
 
     const GrVkImageView*     fTextureView;
     const GrVkImageView*     fLinearTextureView;
diff --git a/src/gpu/vk/GrVkTextureRenderTarget.cpp b/src/gpu/vk/GrVkTextureRenderTarget.cpp
index 8dc5ffe..e380e73 100644
--- a/src/gpu/vk/GrVkTextureRenderTarget.cpp
+++ b/src/gpu/vk/GrVkTextureRenderTarget.cpp
@@ -26,12 +26,13 @@
                                                  const GrVkImageView* texView,
                                                  const GrVkImageInfo& msaaInfo,
                                                  const GrVkImageView* colorAttachmentView,
-                                                 const GrVkImageView* resolveAttachmentView)
+                                                 const GrVkImageView* resolveAttachmentView,
+                                                 GrBackendObjectOwnership ownership)
         : GrSurface(gpu, desc)
-        , GrVkImage(info, GrVkImage::kNot_Wrapped)
-        , GrVkTexture(gpu, desc, info, texView, GrVkImage::kNot_Wrapped)
+        , GrVkImage(info, ownership)
+        , GrVkTexture(gpu, desc, info, texView, ownership)
         , GrVkRenderTarget(gpu, desc, info, msaaInfo, colorAttachmentView,
-                           resolveAttachmentView, GrVkImage::kNot_Wrapped) {
+                           resolveAttachmentView, GrBackendObjectOwnership::kOwned) {
     this->registerWithCache(budgeted);
 }
 
@@ -40,11 +41,12 @@
                                                  const GrSurfaceDesc& desc,
                                                  const GrVkImageInfo& info,
                                                  const GrVkImageView* texView,
-                                                 const GrVkImageView* colorAttachmentView)
+                                                 const GrVkImageView* colorAttachmentView,
+                                                 GrBackendObjectOwnership ownership)
         : GrSurface(gpu, desc)
-        , GrVkImage(info, GrVkImage::kNot_Wrapped)
-        , GrVkTexture(gpu, desc, info, texView, GrVkImage::kNot_Wrapped)
-        , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, GrVkImage::kNot_Wrapped) {
+        , GrVkImage(info, ownership)
+        , GrVkTexture(gpu, desc, info, texView, ownership)
+        , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, GrBackendObjectOwnership::kOwned) {
     this->registerWithCache(budgeted);
 }
 
@@ -55,12 +57,12 @@
                                                  const GrVkImageInfo& msaaInfo,
                                                  const GrVkImageView* colorAttachmentView,
                                                  const GrVkImageView* resolveAttachmentView,
-                                                 GrVkImage::Wrapped wrapped)
+                                                 GrBackendObjectOwnership ownership)
         : GrSurface(gpu, desc)
-        , GrVkImage(info, wrapped)
-        , GrVkTexture(gpu, desc, info, texView, wrapped)
+        , GrVkImage(info, ownership)
+        , GrVkTexture(gpu, desc, info, texView, ownership)
         , GrVkRenderTarget(gpu, desc, info, msaaInfo, colorAttachmentView,
-                           resolveAttachmentView, wrapped) {
+                           resolveAttachmentView, ownership) {
     this->registerWithCacheWrapped();
 }
 
@@ -69,11 +71,11 @@
                                                  const GrVkImageInfo& info,
                                                  const GrVkImageView* texView,
                                                  const GrVkImageView* colorAttachmentView,
-                                                 GrVkImage::Wrapped wrapped)
+                                                 GrBackendObjectOwnership ownership)
         : GrSurface(gpu, desc)
-        , GrVkImage(info, wrapped)
-        , GrVkTexture(gpu, desc, info, texView, wrapped)
-        , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, wrapped) {
+        , GrVkImage(info, ownership)
+        , GrVkTexture(gpu, desc, info, texView, ownership)
+        , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, ownership) {
     this->registerWithCacheWrapped();
 }
 
@@ -82,7 +84,8 @@
                                                              const GrSurfaceDesc& desc,
                                                              const GrVkImageInfo& info,
                                                              SkBudgeted budgeted,
-                                                             GrVkImage::Wrapped wrapped) {
+                                                             GrBackendObjectOwnership ownership,
+                                                             bool isWrapped) {
     VkImage image = info.fImage;
     // Create the texture ImageView
     const GrVkImageView* imageView = GrVkImageView::Create(gpu, image, info.fFormat,
@@ -149,30 +152,30 @@
 
     sk_sp<GrVkTextureRenderTarget> texRT;
     if (desc.fSampleCnt) {
-        if (GrVkImage::kNot_Wrapped == wrapped) {
+        if (!isWrapped) {
             texRT = sk_sp<GrVkTextureRenderTarget>(new GrVkTextureRenderTarget(
                                                       gpu, budgeted, desc,
                                                       info, imageView, msInfo,
                                                       colorAttachmentView,
-                                                      resolveAttachmentView));
+                                                      resolveAttachmentView, ownership));
         } else {
             texRT = sk_sp<GrVkTextureRenderTarget>(new GrVkTextureRenderTarget(
                                                         gpu, desc,
                                                         info, imageView, msInfo,
                                                         colorAttachmentView,
-                                                        resolveAttachmentView, wrapped));
+                                                        resolveAttachmentView, ownership));
         }
     } else {
-        if (GrVkImage::kNot_Wrapped == wrapped) {
+        if (!isWrapped) {
             texRT = sk_sp<GrVkTextureRenderTarget>(new GrVkTextureRenderTarget(
                                                         gpu, budgeted, desc,
                                                         info, imageView,
-                                                        colorAttachmentView));
+                                                        colorAttachmentView, ownership));
         } else {
             texRT = sk_sp<GrVkTextureRenderTarget>(new GrVkTextureRenderTarget(
                                                         gpu, desc,
                                                         info, imageView,
-                                                        colorAttachmentView, wrapped));
+                                                        colorAttachmentView, ownership));
         }
     }
     return texRT;
@@ -191,7 +194,8 @@
         return nullptr;
     }
 
-    sk_sp<GrVkTextureRenderTarget> trt = Make(gpu, desc, info, budgeted, GrVkImage::kNot_Wrapped);
+    sk_sp<GrVkTextureRenderTarget> trt = Make(gpu, desc, info, budgeted,
+                                              GrBackendObjectOwnership::kOwned, false);
     if (!trt) {
         GrVkImage::DestroyImageInfo(gpu, &info);
     }
@@ -202,16 +206,16 @@
 sk_sp<GrVkTextureRenderTarget>
 GrVkTextureRenderTarget::MakeWrappedTextureRenderTarget(GrVkGpu* gpu,
                                                         const GrSurfaceDesc& desc,
-                                                        GrWrapOwnership ownership,
+                                                        GrWrapOwnership wrapOwnership,
                                                         const GrVkImageInfo* info) {
     SkASSERT(info);
     // Wrapped textures require both image and allocation (because they can be mapped)
     SkASSERT(VK_NULL_HANDLE != info->fImage && VK_NULL_HANDLE != info->fAlloc.fMemory);
 
-    GrVkImage::Wrapped wrapped = kBorrow_GrWrapOwnership == ownership ? GrVkImage::kBorrowed_Wrapped
-                                                                      : GrVkImage::kAdopted_Wrapped;
+    GrBackendObjectOwnership ownership = kBorrow_GrWrapOwnership == wrapOwnership
+            ? GrBackendObjectOwnership::kBorrowed : GrBackendObjectOwnership::kOwned;
 
-    return Make(gpu, desc, *info, SkBudgeted::kNo, wrapped);
+    return Make(gpu, desc, *info, SkBudgeted::kNo, ownership, true);
 }
 
 bool GrVkTextureRenderTarget::updateForMipmap(GrVkGpu* gpu, const GrVkImageInfo& newInfo) {
diff --git a/src/gpu/vk/GrVkTextureRenderTarget.h b/src/gpu/vk/GrVkTextureRenderTarget.h
index 9dc7574..6ec5250 100644
--- a/src/gpu/vk/GrVkTextureRenderTarget.h
+++ b/src/gpu/vk/GrVkTextureRenderTarget.h
@@ -55,14 +55,16 @@
                             const GrVkImageView* texView,
                             const GrVkImageInfo& msaaInfo,
                             const GrVkImageView* colorAttachmentView,
-                            const GrVkImageView* resolveAttachmentView);
+                            const GrVkImageView* resolveAttachmentView,
+                            GrBackendObjectOwnership);
 
     GrVkTextureRenderTarget(GrVkGpu* gpu,
                             SkBudgeted budgeted,
                             const GrSurfaceDesc& desc,
                             const GrVkImageInfo& info,
                             const GrVkImageView* texView,
-                            const GrVkImageView* colorAttachmentView);
+                            const GrVkImageView* colorAttachmentView,
+                            GrBackendObjectOwnership);
 
     GrVkTextureRenderTarget(GrVkGpu* gpu,
                             const GrSurfaceDesc& desc,
@@ -71,20 +73,21 @@
                             const GrVkImageInfo& msaaInfo,
                             const GrVkImageView* colorAttachmentView,
                             const GrVkImageView* resolveAttachmentView,
-                            GrVkImage::Wrapped wrapped);
+                            GrBackendObjectOwnership);
 
     GrVkTextureRenderTarget(GrVkGpu* gpu,
                             const GrSurfaceDesc& desc,
                             const GrVkImageInfo& info,
                             const GrVkImageView* texView,
                             const GrVkImageView* colorAttachmentView,
-                            GrVkImage::Wrapped wrapped);
+                            GrBackendObjectOwnership);
 
     static sk_sp<GrVkTextureRenderTarget> Make(GrVkGpu*,
                                                const GrSurfaceDesc&,
                                                const GrVkImageInfo&,
                                                SkBudgeted budgeted,
-                                               GrVkImage::Wrapped wrapped);
+                                               GrBackendObjectOwnership,
+                                               bool isWrapped);
 
     // GrGLRenderTarget accounts for the texture's memory and any MSAA renderbuffer's memory.
     size_t onGpuMemorySize() const override;