diff --git a/include/vulkan.h b/include/vulkan.h
index efedb8c..a819d9b 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -832,6 +832,7 @@
     VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
     VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
 } VkImageAspectFlagBits;
+typedef VkFlags VkImageAspectFlags;
 
 typedef enum {
     VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
@@ -894,7 +895,6 @@
 typedef VkFlags VkBufferUsageFlags;
 typedef VkFlags VkBufferViewCreateFlags;
 typedef VkFlags VkImageViewCreateFlags;
-typedef VkFlags VkImageAspectFlags;
 typedef VkFlags VkShaderModuleCreateFlags;
 typedef VkFlags VkShaderCreateFlags;
 
@@ -1393,7 +1393,7 @@
 } VkMemoryRequirements;
 
 typedef struct {
-    VkImageAspectFlagBits                       aspect;
+    VkImageAspectFlags                          aspectMask;
     VkExtent3D                                  imageGranularity;
     VkSparseImageFormatFlags                    flags;
 } VkSparseImageFormatProperties;
@@ -1427,7 +1427,7 @@
 } VkSparseImageOpaqueMemoryBindInfo;
 
 typedef struct {
-    VkImageAspectFlagBits                       aspect;
+    VkImageAspectFlags                          aspectMask;
     uint32_t                                    mipLevel;
     uint32_t                                    arrayLayer;
 } VkImageSubresource;
diff --git a/layers/image.cpp b/layers/image.cpp
index 5420d4f..c84fa9c 100644
--- a/layers/image.cpp
+++ b/layers/image.cpp
@@ -911,17 +911,17 @@
     if (imageEntry != device_data->imageMap.end()) {
         format = imageEntry->second.format;
         if (vk_format_is_color(format)) {
-            if (pSubresource->aspect != VK_IMAGE_ASPECT_COLOR_BIT) {
+            if (pSubresource->aspectMask != VK_IMAGE_ASPECT_COLOR_BIT) {
                 std::stringstream ss;
-                ss << "vkGetImageSubresourceLayout: For color formats, the aspect field of VkImageSubresource must be VK_IMAGE_ASPECT_COLOR.";
+                ss << "vkGetImageSubresourceLayout: For color formats, the aspectMask field of VkImageSubresource must be VK_IMAGE_ASPECT_COLOR.";
                 skipCall |= log_msg(device_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_IMAGE,
                                    (uint64_t)image, 0, IMAGE_INVALID_IMAGE_ASPECT, "IMAGE", ss.str().c_str());
             }
         } else if (vk_format_is_depth_or_stencil(format)) {
-            if ((pSubresource->aspect != VK_IMAGE_ASPECT_DEPTH_BIT) &&
-                (pSubresource->aspect != VK_IMAGE_ASPECT_STENCIL_BIT)) {
+            if ((pSubresource->aspectMask != VK_IMAGE_ASPECT_DEPTH_BIT) &&
+                (pSubresource->aspectMask != VK_IMAGE_ASPECT_STENCIL_BIT)) {
                 std::stringstream ss;
-                ss << "vkGetImageSubresourceLayout: For depth/stencil formats, the aspect selects either the depth or stencil image aspect.";
+                ss << "vkGetImageSubresourceLayout: For depth/stencil formats, the aspectMask selects either the depth or stencil image aspectMask.";
                 skipCall |= log_msg(device_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_IMAGE,
                                    (uint64_t)image, 0, IMAGE_INVALID_IMAGE_ASPECT, "IMAGE", ss.str().c_str());
             }
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index ad1f2e8..0aff450 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -2492,11 +2492,11 @@
 
     if(pSparseMemoryRequirements != nullptr)
     {
-    if ((pSparseMemoryRequirements->formatProperties.aspect &
+    if ((pSparseMemoryRequirements->formatProperties.aspectMask &
        (VK_IMAGE_ASPECT_COLOR_BIT | VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT | VK_IMAGE_ASPECT_METADATA_BIT)) == 0)
     {
         log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkGetImageSparseMemoryRequirements parameter, VkImageAspect pSparseMemoryRequirements->formatProperties.aspect, is an unrecognized enumerator");
+        "vkGetImageSparseMemoryRequirements parameter, VkImageAspect pSparseMemoryRequirements->formatProperties.aspectMask, is an unrecognized enumerator");
         return false;
     }
     }
@@ -2558,11 +2558,11 @@
 
     if(pProperties != nullptr)
     {
-    if ((pProperties->aspect &
+    if ((pProperties->aspectMask &
        (VK_IMAGE_ASPECT_COLOR_BIT | VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT | VK_IMAGE_ASPECT_METADATA_BIT)) == 0)
     {
         log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkImageAspect pProperties->aspect, is an unrecognized enumerator");
+        "vkGetPhysicalDeviceSparseImageFormatProperties parameter, VkImageAspect pProperties->aspectMask, is an unrecognized enumerator");
         return false;
     }
     }
@@ -3306,11 +3306,11 @@
 {
     if(pSubresource != nullptr)
     {
-    if ((pSubresource->aspect &
+    if ((pSubresource->aspectMask &
        (VK_IMAGE_ASPECT_COLOR_BIT | VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT | VK_IMAGE_ASPECT_METADATA_BIT)) == 0)
     {
         log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkGetImageSubresourceLayout parameter, VkImageAspect pSubresource->aspect, is an unrecognized enumerator");
+        "vkGetImageSubresourceLayout parameter, VkImageAspect pSubresource->aspectMask, is an unrecognized enumerator");
         return false;
     }
     }
diff --git a/tests/init.cpp b/tests/init.cpp
index 5326380..a4157a8 100644
--- a/tests/init.cpp
+++ b/tests/init.cpp
@@ -382,7 +382,7 @@
 
     if (image_fmt.linearTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) {
         VkImageSubresource subresource = {};
-        subresource.aspect = VK_IMAGE_ASPECT_COLOR_BIT;
+        subresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
         subresource.arrayLayer = 0;
 
         _w = w;
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index 0bb4293..87b4ebe 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -681,7 +681,7 @@
 inline VkImageSubresource Image::subresource(VkImageAspectFlagBits aspect, uint32_t mip_level, uint32_t array_layer)
 {
     VkImageSubresource subres = {};
-    subres.aspect = aspect;
+    subres.aspectMask = aspect;
     subres.mipLevel = mip_level;
     subres.arrayLayer = array_layer;
     return subres;
@@ -747,7 +747,7 @@
 
 inline VkImageSubresourceRange Image::subresource_range(const VkImageSubresource &subres)
 {
-    return subresource_range(subres.aspect, subres.mipLevel, 1, subres.arrayLayer, 1);
+    return subresource_range(subres.aspectMask, subres.mipLevel, 1, subres.arrayLayer, 1);
 }
 
 inline VkExtent2D Image::extent(int32_t width, int32_t height)
