Bug 12998: change ImageSubresourceRange's aspect to aspectMask
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index f1191a1..704e540 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -1296,7 +1296,7 @@
                          VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT; // Going to check contents
 
         const VkImageSubresourceRange range =
-            vk_testing::Image::subresource_range(img_info, VK_IMAGE_ASPECT_COLOR);
+            vk_testing::Image::subresource_range(img_info, VK_IMAGE_ASPECT_COLOR_BIT);
         std::vector<VkImageSubresourceRange> ranges(&range, &range + 1);
 
         test_clear_color_image(img_info, color, ranges);
@@ -1476,14 +1476,14 @@
         img_info.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
 
         const VkImageSubresourceRange range =
-            vk_testing::Image::subresource_range(img_info, VK_IMAGE_ASPECT_DEPTH);
+            vk_testing::Image::subresource_range(img_info, VK_IMAGE_ASPECT_DEPTH_BIT);
         std::vector<VkImageSubresourceRange> ranges(&range, &range + 1);
 
         if (it->format == VK_FORMAT_D32_SFLOAT_S8_UINT ||
             it->format == VK_FORMAT_D16_UNORM_S8_UINT ||
             it->format == VK_FORMAT_D24_UNORM_S8_UINT) {
                 const VkImageSubresourceRange range2 =
-                    vk_testing::Image::subresource_range(img_info, VK_IMAGE_ASPECT_STENCIL);
+                    vk_testing::Image::subresource_range(img_info, VK_IMAGE_ASPECT_STENCIL_BIT);
                 ranges.push_back(range2);
             }
 
diff --git a/tests/image_tests.cpp b/tests/image_tests.cpp
index fed5eae..4759e5c 100644
--- a/tests/image_tests.cpp
+++ b/tests/image_tests.cpp
@@ -289,7 +289,7 @@
     viewInfo.subresourceRange.arraySize = 1;
     viewInfo.subresourceRange.baseMipLevel = 0;
     viewInfo.subresourceRange.mipLevels = 1;
-    viewInfo.subresourceRange.aspect = VK_IMAGE_ASPECT_COLOR;
+    viewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
 
     //    VkResult VKAPI vkCreateImageView(
     //        VkDevice                                  device,
diff --git a/tests/init.cpp b/tests/init.cpp
index 00b68ae..f933af3 100644
--- a/tests/init.cpp
+++ b/tests/init.cpp
@@ -463,7 +463,7 @@
     viewInfo.subresourceRange.arraySize = 1;
     viewInfo.subresourceRange.baseMipLevel = 0;
     viewInfo.subresourceRange.mipLevels = 1;
-    viewInfo.subresourceRange.aspect = VK_IMAGE_ASPECT_COLOR;
+    viewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
 
 //    VkResult VKAPI vkCreateImageView(
 //        VkDevice                                  device,
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 708cab8..a199c19 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -862,7 +862,7 @@
     view.channels.g = VK_CHANNEL_SWIZZLE_G;
     view.channels.b = VK_CHANNEL_SWIZZLE_B;
     view.channels.a = VK_CHANNEL_SWIZZLE_A;
-    view.subresourceRange.aspect = VK_IMAGE_ASPECT_COLOR;
+    view.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
     view.subresourceRange.baseMipLevel = 0;
     view.subresourceRange.mipLevels = 1;
     view.subresourceRange.baseArrayLayer = 0;
@@ -1357,7 +1357,7 @@
 
     // whatever we want to do, we do it to the whole buffer
     VkImageSubresourceRange srRange = {};
-    srRange.aspect = VK_IMAGE_ASPECT_COLOR;
+    srRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
     srRange.baseMipLevel = 0;
     srRange.mipLevels = VK_REMAINING_MIP_LEVELS;
     srRange.baseArrayLayer = 0;
@@ -1389,7 +1389,7 @@
     if (depthStencilObj)
     {
         VkImageSubresourceRange dsRange = {};
-        dsRange.aspect = VK_IMAGE_ASPECT_DEPTH;
+        dsRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
         dsRange.baseMipLevel = 0;
         dsRange.mipLevels = VK_REMAINING_MIP_LEVELS;
         dsRange.baseArrayLayer = 0;
@@ -1444,7 +1444,7 @@
         VK_MEMORY_INPUT_TRANSFER_BIT;
 
     VkImageSubresourceRange srRange = {};
-    srRange.aspect = VK_IMAGE_ASPECT_COLOR;
+    srRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
     srRange.baseMipLevel = 0;
     srRange.mipLevels = VK_REMAINING_MIP_LEVELS;
     srRange.baseArrayLayer = 0;
@@ -1614,7 +1614,7 @@
     view_info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
     view_info.pNext = NULL;
     view_info.image = VK_NULL_HANDLE;
-    view_info.subresourceRange.aspect = VK_IMAGE_ASPECT_DEPTH;
+    view_info.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
     view_info.subresourceRange.baseMipLevel = 0;
     view_info.subresourceRange.mipLevels = 1;
     view_info.subresourceRange.baseArrayLayer = 0;
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index 7a86501..d1ee018 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -417,13 +417,14 @@
     }
 
     static VkImageCreateInfo create_info();
+    static VkImageAspect image_aspect(VkImageAspectFlags flags);
     static VkImageSubresource subresource(VkImageAspect aspect, uint32_t mip_level, uint32_t array_layer);
     static VkImageSubresource subresource(const VkImageSubresourceRange &range, uint32_t mip_level, uint32_t array_layer);
     static VkImageSubresourceCopy subresource(VkImageAspect aspect, uint32_t mip_level, uint32_t array_layer, uint32_t array_size);
     static VkImageSubresourceCopy subresource(const VkImageSubresourceRange &range, uint32_t mip_level, uint32_t array_layer, uint32_t array_size);
-    static VkImageSubresourceRange subresource_range(VkImageAspect aspect, uint32_t base_mip_level, uint32_t mip_levels,
+    static VkImageSubresourceRange subresource_range(VkImageAspectFlags aspect_mask, uint32_t base_mip_level, uint32_t mip_levels,
                                                      uint32_t base_array_layer, uint32_t array_size);
-    static VkImageSubresourceRange subresource_range(const VkImageCreateInfo &info, VkImageAspect aspect);
+    static VkImageSubresourceRange subresource_range(const VkImageCreateInfo &info, VkImageAspectFlags aspect_mask);
     static VkImageSubresourceRange subresource_range(const VkImageSubresource &subres);
 
     static VkExtent2D extent(int32_t width, int32_t height);
@@ -722,7 +723,7 @@
 
 inline VkImageSubresource Image::subresource(const VkImageSubresourceRange &range, uint32_t mip_level, uint32_t array_layer)
 {
-    return subresource(range.aspect, range.baseMipLevel + mip_level, range.baseArrayLayer + array_layer);
+    return subresource(image_aspect(range.aspectMask), range.baseMipLevel + mip_level, range.baseArrayLayer + array_layer);
 }
 
 inline VkImageSubresourceCopy Image::subresource(VkImageAspect aspect, uint32_t mip_level, uint32_t array_layer, uint32_t array_size)
@@ -735,16 +736,37 @@
     return subres;
 }
 
-inline VkImageSubresourceCopy Image::subresource(const VkImageSubresourceRange &range, uint32_t mip_level, uint32_t array_layer, uint32_t array_size)
+inline VkImageAspect Image::image_aspect(VkImageAspectFlags flags)
 {
-    return subresource(range.aspect, range.baseMipLevel + mip_level, range.baseArrayLayer + array_layer, array_size);
+    /*
+     * This will map VkImageAspectFlags into a single VkImageAspect.
+     * If there is more than one bit defined we'll get an assertion.
+     */
+    switch (flags) {
+    case VK_IMAGE_ASPECT_COLOR_BIT:
+        return VK_IMAGE_ASPECT_COLOR;
+    case VK_IMAGE_ASPECT_DEPTH_BIT:
+        return VK_IMAGE_ASPECT_DEPTH;
+    case VK_IMAGE_ASPECT_STENCIL_BIT:
+        return VK_IMAGE_ASPECT_STENCIL;
+    case VK_IMAGE_ASPECT_METADATA_BIT:
+        return VK_IMAGE_ASPECT_METADATA;
+    default:
+        assert(!"Invalid VkImageAspect");
+    }
+    return VK_IMAGE_ASPECT_COLOR;
 }
 
-inline VkImageSubresourceRange Image::subresource_range(VkImageAspect aspect, uint32_t base_mip_level, uint32_t mip_levels,
+inline VkImageSubresourceCopy Image::subresource(const VkImageSubresourceRange &range, uint32_t mip_level, uint32_t array_layer, uint32_t array_size)
+{
+    return subresource(image_aspect(range.aspectMask), range.baseMipLevel + mip_level, range.baseArrayLayer + array_layer, array_size);
+}
+
+inline VkImageSubresourceRange Image::subresource_range(VkImageAspectFlags aspect_mask, uint32_t base_mip_level, uint32_t mip_levels,
                                                         uint32_t base_array_layer, uint32_t array_size)
 {
     VkImageSubresourceRange range = {};
-    range.aspect = aspect;
+    range.aspectMask = aspect_mask;
     range.baseMipLevel = base_mip_level;
     range.mipLevels = mip_levels;
     range.baseArrayLayer = base_array_layer;
@@ -752,9 +774,9 @@
     return range;
 }
 
-inline VkImageSubresourceRange Image::subresource_range(const VkImageCreateInfo &info, VkImageAspect aspect)
+inline VkImageSubresourceRange Image::subresource_range(const VkImageCreateInfo &info, VkImageAspectFlags aspect_mask)
 {
-    return subresource_range(aspect, 0, info.mipLevels, 0, info.arraySize);
+    return subresource_range(aspect_mask, 0, info.mipLevels, 0, info.arraySize);
 }
 
 inline VkImageSubresourceRange Image::subresource_range(const VkImageSubresource &subres)
diff --git a/tests/vktestframework.cpp b/tests/vktestframework.cpp
index ab8020c..25d392f 100644
--- a/tests/vktestframework.cpp
+++ b/tests/vktestframework.cpp
@@ -919,7 +919,7 @@
         color_image_view.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
         color_image_view.pNext = NULL;
         color_image_view.format = m_format;
-        color_image_view.subresourceRange.aspect = VK_IMAGE_ASPECT_COLOR;
+        color_image_view.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
         color_image_view.subresourceRange.baseMipLevel = 0;
         color_image_view.subresourceRange.mipLevels = 1;
         color_image_view.subresourceRange.baseArrayLayer = 0;