Vulkan: Introduce ContextScoped

Scoped is changed to DeviceScoped and a ContextScoped class is added.
The former destroys objects at the end of scope, and the latter releases
them.

Bug: angleproject:3757
Change-Id: Ia0bbded53e94af9c8c72c77d07306d6724c6c409
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769060
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
index 3885191..f1d1320 100644
--- a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
+++ b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
@@ -835,8 +835,8 @@
         else
         {
             // Create depth- and stencil-only views for reading.
-            vk::Scoped<vk::ImageView> depthView(contextVk->getDevice());
-            vk::Scoped<vk::ImageView> stencilView(contextVk->getDevice());
+            vk::DeviceScoped<vk::ImageView> depthView(contextVk->getDevice());
+            vk::DeviceScoped<vk::ImageView> stencilView(contextVk->getDevice());
 
             vk::ImageHelper *depthStencilImage = &readRenderTarget->getImage();
             uint32_t levelIndex                = readRenderTarget->getLevelIndex();
@@ -1460,7 +1460,7 @@
     // If the source image is multisampled, we need to resolve it into a temporary image before
     // performing a readback.
     bool isMultisampled = srcImage->getSamples() > 1;
-    vk::Scoped<vk::ImageHelper> resolvedImage(contextVk->getDevice());
+    vk::DeviceScoped<vk::ImageHelper> resolvedImage(contextVk->getDevice());
     if (isMultisampled)
     {
         ANGLE_TRY(resolvedImage.get().init2DStaging(