Always destroy resources instead of simply "abandoning" them in Vulkan backend.

This also now requires that when using a vulkan GrContext, the backing VkDevice,
Queue, and Instance must be alive when the GrContext is first destroyed or
abandoned. Additionally any GrBackendTextures created from the GrContext must
be deleted before destroying or abandoning the GrContext.

Bug: skia:9603
Change-Id: Ibf194d2ffdcddd61e34214d7d59a2d9a33c880e5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/257921
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/vk/GrVkTexture.cpp b/src/gpu/vk/GrVkTexture.cpp
index 1257c28..a088556 100644
--- a/src/gpu/vk/GrVkTexture.cpp
+++ b/src/gpu/vk/GrVkTexture.cpp
@@ -181,17 +181,13 @@
 
     // we create this and don't hand it off, so we should always destroy it
     if (fTextureView) {
-        fTextureView->unrefAndAbandon();
+        fTextureView->unref(this->getVkGpu());
         fTextureView = nullptr;
     }
 
-    fDescSetCache.foreach ([](std::unique_ptr<DescriptorCacheEntry>* entry) {
-        (*entry)->fDescriptorSet->unrefAndAbandon();
-        (*entry)->fDescriptorSet = nullptr;
-    });
     fDescSetCache.reset();
 
-    this->abandonImage();
+    this->releaseImage(this->getVkGpu());
     INHERITED::onAbandon();
 }