vulkan: Consistent naming scheme for resources in XGL

Bug 13230
header: 0.78.0
includes review feedback.

v2: replace VK_FORMAT_IMAGE_COPY_BIT by VK_FORMAT_COLOR_ATTACHMENT_BIT for now
    (olv)
diff --git a/demos/cube.c b/demos/cube.c
index 2fcc207..c5250a9 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -351,12 +351,12 @@
 
     if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL) {
         /* Make sure anything that was copying from this image has completed */
-        image_memory_barrier.inputMask = VK_MEMORY_INPUT_COPY_BIT;
+        image_memory_barrier.inputMask = VK_MEMORY_INPUT_TRANSFER_BIT;
     }
 
     if (new_image_layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) {
         /* Make sure any Copy or CPU writes to image are flushed */
-        image_memory_barrier.outputMask = VK_MEMORY_OUTPUT_COPY_BIT | VK_MEMORY_OUTPUT_CPU_WRITE_BIT;
+        image_memory_barrier.outputMask = VK_MEMORY_OUTPUT_CPU_WRITE_BIT | VK_MEMORY_OUTPUT_TRANSFER_BIT;
     }
 
     VkImageMemoryBarrier *pmemory_barrier = &image_memory_barrier;
@@ -990,11 +990,11 @@
 
     for (i = 0; i < DEMO_TEXTURE_COUNT; i++) {
 
-        if (props.linearTilingFeatures & VK_FORMAT_IMAGE_SHADER_READ_BIT && !demo->use_staging_buffer) {
+        if (props.linearTilingFeatures & VK_FORMAT_SAMPLED_IMAGE_BIT && !demo->use_staging_buffer) {
             /* Device can texture using linear textures */
             demo_prepare_texture_image(demo, tex_files[i], &demo->textures[i],
                                        VK_LINEAR_TILING, VK_MEMORY_PROPERTY_CPU_VISIBLE_BIT);
-        } else if (props.optimalTilingFeatures & VK_FORMAT_IMAGE_SHADER_READ_BIT) {
+        } else if (props.optimalTilingFeatures & VK_FORMAT_SAMPLED_IMAGE_BIT) {
             /* Must use staging buffer to copy linear texture to optimized */
             struct texture_object staging_texture;
 
@@ -1132,7 +1132,7 @@
     memset(&buf_info, 0, sizeof(buf_info));
     buf_info.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
     buf_info.size = sizeof(data);
-    buf_info.usage = VK_BUFFER_USAGE_UNIFORM_READ_BIT;
+    buf_info.usage = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;
     err = vkCreateBuffer(demo->device, &buf_info, &demo->uniform_data.buf);
     assert(!err);
 
@@ -1196,7 +1196,7 @@
             .pImmutableSamplers = NULL,
         },
         [1] = {
-            .descriptorType = VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE,
+            .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
             .count = DEMO_TEXTURE_COUNT,
             .stageFlags = VK_SHADER_STAGE_FLAGS_FRAGMENT_BIT,
             .pImmutableSamplers = NULL,
@@ -1508,7 +1508,7 @@
             .count = 1,
         },
         [1] = {
-            .type = VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE,
+            .type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
             .count = DEMO_TEXTURE_COUNT,
         },
     };
diff --git a/demos/tri.c b/demos/tri.c
index 005532d..671c1bb 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -179,12 +179,12 @@
 
     if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL) {
         /* Make sure anything that was copying from this image has completed */
-        image_memory_barrier.inputMask = VK_MEMORY_INPUT_COPY_BIT;
+        image_memory_barrier.inputMask = VK_MEMORY_INPUT_TRANSFER_BIT;
     }
 
     if (new_image_layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) {
         /* Make sure any Copy or CPU writes to image are flushed */
-        image_memory_barrier.outputMask = VK_MEMORY_OUTPUT_COPY_BIT | VK_MEMORY_OUTPUT_CPU_WRITE_BIT;
+        image_memory_barrier.outputMask = VK_MEMORY_OUTPUT_TRANSFER_BIT | VK_MEMORY_OUTPUT_CPU_WRITE_BIT;
     }
 
     VkImageMemoryBarrier *pmemory_barrier = &image_memory_barrier;
@@ -633,11 +633,11 @@
     assert(!err);
 
     for (i = 0; i < DEMO_TEXTURE_COUNT; i++) {
-        if ((props.linearTilingFeatures & VK_FORMAT_IMAGE_SHADER_READ_BIT) && !demo->use_staging_buffer) {
+        if ((props.linearTilingFeatures & VK_FORMAT_SAMPLED_IMAGE_BIT) && !demo->use_staging_buffer) {
             /* Device can texture using linear textures */
             demo_prepare_texture_image(demo, tex_colors[i], &demo->textures[i],
                                        VK_LINEAR_TILING, VK_MEMORY_PROPERTY_CPU_VISIBLE_BIT);
-        } else if (props.optimalTilingFeatures & VK_FORMAT_IMAGE_SHADER_READ_BIT){
+        } else if (props.optimalTilingFeatures & VK_FORMAT_SAMPLED_IMAGE_BIT){
             /* Must use staging buffer to copy linear texture to optimized */
             struct texture_object staging_texture;
 
@@ -739,7 +739,7 @@
         .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
         .pNext = NULL,
         .size = sizeof(vb),
-        .usage = VK_BUFFER_USAGE_VERTEX_FETCH_BIT,
+        .usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
         .flags = 0,
     };
     VkMemoryAllocBufferInfo buf_alloc = {
@@ -829,7 +829,7 @@
 static void demo_prepare_descriptor_layout(struct demo *demo)
 {
     const VkDescriptorSetLayoutBinding layout_binding = {
-        .descriptorType = VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE,
+        .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
         .count = DEMO_TEXTURE_COUNT,
         .stageFlags = VK_SHADER_STAGE_FLAGS_FRAGMENT_BIT,
         .pImmutableSamplers = NULL,
@@ -1078,7 +1078,7 @@
 static void demo_prepare_descriptor_pool(struct demo *demo)
 {
     const VkDescriptorTypeCount type_count = {
-        .type = VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE,
+        .type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
         .count = DEMO_TEXTURE_COUNT,
     };
     const VkDescriptorPoolCreateInfo descriptor_pool = {
diff --git a/demos/vulkaninfo.c b/demos/vulkaninfo.c
index 47edf53..01d7745 100644
--- a/demos/vulkaninfo.c
+++ b/demos/vulkaninfo.c
@@ -487,17 +487,19 @@
             continue;
 
         printf("\t%s tiling image =%s%s%s\n", tilings[i].name,
-                (tilings[i].flags & VK_FORMAT_IMAGE_SHADER_READ_BIT)      ? " read" : "",
-                (tilings[i].flags & VK_FORMAT_IMAGE_SHADER_WRITE_BIT)     ? " write" : "",
-                (tilings[i].flags & VK_FORMAT_IMAGE_COPY_BIT)             ? " copy" : "");
-        printf("\t%s tiling memory =%s\n", tilings[i].name,
-                (tilings[i].flags & VK_FORMAT_MEMORY_SHADER_ACCESS_BIT)   ? " access" : "");
-        printf("\t%s tiling attachment =%s%s%s%s%s\n", tilings[i].name,
-                (tilings[i].flags & VK_FORMAT_COLOR_ATTACHMENT_WRITE_BIT) ? " color" : "",
+                (tilings[i].flags & VK_FORMAT_SAMPLED_IMAGE_BIT)      ? " sampled" : "",
+                (tilings[i].flags & VK_FORMAT_STORAGE_IMAGE_BIT)   ? " storage" : "",
+                (tilings[i].flags & VK_FORMAT_STORAGE_IMAGE_ATOMIC_BIT) ? " atomic" : "");
+        printf("\t%s tiling texel =%s%s%s\n", tilings[i].name,
+                (tilings[i].flags & VK_FORMAT_UNIFORM_TEXEL_BUFFER_BIT)      ? " TBO" : "",
+                (tilings[i].flags & VK_FORMAT_STORAGE_TEXEL_BUFFER_BIT)   ? " IBO" : "",
+                (tilings[i].flags & VK_FORMAT_STORAGE_TEXEL_BUFFER_ATOMIC_BIT) ? " atomic" : "");
+        printf("\t%s tiling attachment =%s%s%s\n", tilings[i].name,
+                (tilings[i].flags & VK_FORMAT_COLOR_ATTACHMENT_BIT) ? " color" : "",
                 (tilings[i].flags & VK_FORMAT_COLOR_ATTACHMENT_BLEND_BIT) ? " blend" : "",
-                (tilings[i].flags & VK_FORMAT_DEPTH_ATTACHMENT_BIT)       ? " depth" : "",
-                (tilings[i].flags & VK_FORMAT_STENCIL_ATTACHMENT_BIT)     ? " stencil" : "",
-                (tilings[i].flags & VK_FORMAT_MSAA_ATTACHMENT_BIT)        ? " msaa" : "");
+                (tilings[i].flags & VK_FORMAT_DEPTH_STENCIL_ATTACHMENT_BIT)       ? " depth/stencil" : "");
+        printf("\t%s tiling vertex = %u\n", tilings[i].name,
+                (bool) (tilings[i].flags & VK_FORMAT_VERTEX_BUFFER_BIT));
         printf("\t%s tiling conversion = %u\n", tilings[i].name,
                 (bool) (tilings[i].flags & VK_FORMAT_CONVERSION_BIT));
     }
diff --git a/icd/intel/buf.c b/icd/intel/buf.c
index b670b7c..291e298 100644
--- a/icd/intel/buf.c
+++ b/icd/intel/buf.c
@@ -60,8 +60,10 @@
              *      bytes added beyond that to account for the L1 cache line."
              */
             mem_req->size = buf->size;
-            if (buf->usage & VK_BUFFER_USAGE_SHADER_ACCESS_READ_BIT)
+            if (buf->usage & (VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT |
+                             VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT)) {
                 mem_req->size = u_align(mem_req->size, 256) + 16;
+            }
 
             mem_req->alignment = 4096;
             mem_req->memType = VK_MEMORY_TYPE_BUFFER;
diff --git a/icd/intel/cmd_barrier.c b/icd/intel/cmd_barrier.c
index e1eb1e1..93f7d33 100644
--- a/icd/intel/cmd_barrier.c
+++ b/icd/intel/cmd_barrier.c
@@ -244,7 +244,7 @@
     }
 
     /* CPU write is cache coherent, so VK_MEMORY_OUTPUT_CPU_WRITE_BIT needs no flush. */
-    /* Meta handles flushes, so VK_MEMORY_OUTPUT_COPY_BIT needs no flush. */
+    /* Meta handles flushes, so VK_MEMORY_OUTPUT_TRANSFER_BIT needs no flush. */
 
     if (input_mask & (VK_MEMORY_INPUT_SHADER_READ_BIT | VK_MEMORY_INPUT_UNIFORM_READ_BIT)) {
         flush_flags |= GEN6_PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE;
@@ -264,7 +264,7 @@
      * VK_MEMORY_INPUT_INDEX_FETCH_BIT
      * VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT
      * VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT
-     * VK_MEMORY_INPUT_COPY_BIT
+     * VK_MEMORY_INPUT_TRANSFER_BIT
      */
 
     cmd_batch_flush(cmd, flush_flags);
diff --git a/icd/intel/cmd_meta.c b/icd/intel/cmd_meta.c
index 4037585..f1b362e 100644
--- a/icd/intel/cmd_meta.c
+++ b/icd/intel/cmd_meta.c
@@ -43,7 +43,7 @@
     memset(&info, 0, sizeof(info));
     info.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
     info.buffer = buf;
-    info.viewType = VK_BUFFER_VIEW_TYPED;
+    info.viewType = VK_BUFFER_VIEW_FORMATTED;
     info.format = format;
     info.range = range;
 
diff --git a/icd/intel/desc.c b/icd/intel/desc.c
index d599d96..66a2ea7 100644
--- a/icd/intel/desc.c
+++ b/icd/intel/desc.c
@@ -180,18 +180,18 @@
     case VK_DESCRIPTOR_TYPE_SAMPLER:
         sampler_size = region->sampler_desc_size;
         break;
-    case VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE:
+    case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
         surface_size = region->surface_desc_size;
         sampler_size = region->sampler_desc_size;
         break;
-    case VK_DESCRIPTOR_TYPE_TEXTURE:
-    case VK_DESCRIPTOR_TYPE_TEXTURE_BUFFER:
-    case VK_DESCRIPTOR_TYPE_IMAGE:
-    case VK_DESCRIPTOR_TYPE_IMAGE_BUFFER:
+    case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
+    case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
+    case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
+    case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
     case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
-    case VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER:
+    case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
     case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
-    case VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER_DYNAMIC:
+    case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
         surface_size = region->surface_desc_size;
         break;
     default:
@@ -559,7 +559,7 @@
     const struct intel_desc_layout_binding *binding;
     uint32_t i;
 
-    if (!desc_iter_init_for_update(&iter, set, VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE,
+    if (!desc_iter_init_for_update(&iter, set, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
                 update->binding, update->arrayIndex))
         return;
 
@@ -667,7 +667,7 @@
     uint32_t i;
 
     /* disallow combined sampler textures */
-    if (update->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE)
+    if (update->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER)
         return;
 
     if (!desc_iter_init_for_update(&iter, set, update->descriptorType,
@@ -726,7 +726,7 @@
 
         switch (lb->descriptorType) {
         case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
-        case VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER_DYNAMIC:
+        case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
             layout->dynamic_desc_count += lb->count;
             break;
         default:
diff --git a/icd/intel/format.c b/icd/intel/format.c
index 032cdd2..9f40cf3 100644
--- a/icd/intel/format.c
+++ b/icd/intel/format.c
@@ -577,7 +577,7 @@
     vf = (fmt < ARRAY_SIZE(intel_vf_caps)) ?  &intel_vf_caps[fmt] : NULL;
     dp = (fmt < ARRAY_SIZE(intel_dp_caps)) ?  &intel_dp_caps[fmt] : NULL;
 
-    features = VK_FORMAT_MEMORY_SHADER_ACCESS_BIT;
+    features = VK_FORMAT_STORAGE_IMAGE_BIT;
 
 #define TEST(dev, func, cap) ((func) && (func)->cap && \
         intel_gpu_gen((dev)->gpu) >= (func)->cap)
@@ -588,20 +588,20 @@
     if (TEST(dev, sampler, sampling)) {
         if (icd_format_is_int(format) ||
             TEST(dev, sampler, filtering))
-            features |= VK_FORMAT_IMAGE_SHADER_READ_BIT;
+            features |= VK_FORMAT_SAMPLED_IMAGE_BIT;
     }
 
     if (TEST(dev, dp, typed_write))
-        features |= VK_FORMAT_IMAGE_SHADER_WRITE_BIT;
+        features |= VK_FORMAT_SAMPLED_IMAGE_BIT;
 
     if (TEST(dev, dp, rt_write)) {
-        features |= VK_FORMAT_COLOR_ATTACHMENT_WRITE_BIT;
+        features |= VK_FORMAT_COLOR_ATTACHMENT_BIT;
 
         if (TEST(dev, dp, rt_write_blending))
             features |= VK_FORMAT_COLOR_ATTACHMENT_BLEND_BIT;
 
-        if (features & VK_FORMAT_IMAGE_SHADER_READ_BIT) {
-            features |= VK_FORMAT_IMAGE_COPY_BIT |
+        if (features & VK_FORMAT_SAMPLED_IMAGE_BIT) {
+            features |= VK_FORMAT_SAMPLED_IMAGE_BIT |
                         VK_FORMAT_CONVERSION_BIT;
         }
     }
@@ -619,18 +619,18 @@
 
     switch (format) {
     case VK_FMT_S8_UINT:
-        features = VK_FORMAT_STENCIL_ATTACHMENT_BIT;;
+        features = VK_FORMAT_DEPTH_STENCIL_ATTACHMENT_BIT;;
         break;
     case VK_FMT_D16_UNORM:
     case VK_FMT_D24_UNORM:
     case VK_FMT_D32_SFLOAT:
-        features = VK_FORMAT_DEPTH_ATTACHMENT_BIT;
+        features = VK_FORMAT_DEPTH_STENCIL_ATTACHMENT_BIT;
         break;
     case VK_FMT_D16_UNORM_S8_UINT:
     case VK_FMT_D24_UNORM_S8_UINT:
     case VK_FMT_D32_SFLOAT_S8_UINT:
-        features = VK_FORMAT_DEPTH_ATTACHMENT_BIT |
-                   VK_FORMAT_STENCIL_ATTACHMENT_BIT;
+        features = VK_FORMAT_DEPTH_STENCIL_ATTACHMENT_BIT |
+                   VK_FORMAT_DEPTH_STENCIL_ATTACHMENT_BIT;
         break;
     default:
         features = 0;
@@ -644,7 +644,7 @@
                                                VkFormat format)
 {
     return (format == VK_FMT_UNDEFINED) ?
-        VK_FORMAT_MEMORY_SHADER_ACCESS_BIT : 0;
+        VK_FORMAT_STORAGE_IMAGE_BIT : 0;
 }
 
 static void intel_format_get_props(const struct intel_dev *dev,
diff --git a/icd/intel/img.c b/icd/intel/img.c
index 8850b01..76e499a 100644
--- a/icd/intel/img.c
+++ b/icd/intel/img.c
@@ -155,7 +155,7 @@
         s8_info = *info;
         s8_info.format = VK_FMT_S8_UINT;
         /* no stencil texturing */
-        s8_info.usage &= ~VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT;
+        s8_info.usage &= ~VK_IMAGE_USAGE_SAMPLED_BIT;
         assert(icd_format_is_ds(info->format));
 
         intel_layout_init(img->s8_layout, dev, &s8_info, scanout);
diff --git a/icd/intel/layout.c b/icd/intel/layout.c
index 67df8a9..dbc5e14 100644
--- a/icd/intel/layout.c
+++ b/icd/intel/layout.c
@@ -534,7 +534,7 @@
       valid_tilings &= ~LAYOUT_TILING_W;
    }
 
-   if (info->usage & VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT) {
+   if (info->usage & VK_IMAGE_USAGE_SAMPLED_BIT) {
       if (intel_gpu_gen(params->gpu) < INTEL_GEN(8))
          valid_tilings &= ~LAYOUT_TILING_W;
    }
@@ -561,7 +561,7 @@
       preferred_tilings &= ~LAYOUT_TILING_W;
 
    if (info->usage & (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
-                      VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT)) {
+                      VK_IMAGE_USAGE_SAMPLED_BIT)) {
       /*
        * heuristically set a minimum width/height for enabling tiling
        */
@@ -844,7 +844,7 @@
     *      padding purposes. The value of 4 for j still applies for mip level
     *      alignment and QPitch calculation."
     */
-   if (info->usage & VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT) {
+   if (info->usage & VK_IMAGE_USAGE_SAMPLED_BIT) {
       if (align_w < layout->align_i)
           align_w = layout->align_i;
       if (align_h < layout->align_j)
@@ -911,7 +911,7 @@
        *      required above."
        */
       if (intel_gpu_gen(params->gpu) >= INTEL_GEN(7.5) &&
-          (params->info->usage & VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT) &&
+          (params->info->usage & VK_IMAGE_USAGE_SAMPLED_BIT) &&
           layout->tiling == GEN6_TILING_NONE)
          h += (64 + layout->bo_stride - 1) / layout->bo_stride;
 
diff --git a/icd/intel/view.c b/icd/intel/view.c
index f74ae20..ea6dc14 100644
--- a/icd/intel/view.c
+++ b/icd/intel/view.c
@@ -1070,9 +1070,9 @@
                                  struct intel_buf_view **view_ret)
 {
     struct intel_buf *buf = intel_buf(info->buffer);
-    const bool will_write = (buf->usage |
-            (VK_BUFFER_USAGE_SHADER_ACCESS_WRITE_BIT &
-             VK_BUFFER_USAGE_SHADER_ACCESS_ATOMIC_BIT));
+    /* TODO: Is transfer destination the only shader write operation? */
+    const bool will_write = (buf->usage & (VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT |
+                             VK_BUFFER_USAGE_STORAGE_BUFFER_BIT));
     VkFormat format;
     VkGpuSize stride;
     uint32_t *cmd;
diff --git a/include/vulkan.h b/include/vulkan.h
index 0c85cb1..a7a33f7 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -33,7 +33,7 @@
 #include "vk_platform.h"
 
 // Vulkan API version supported by this file
-#define VK_API_VERSION VK_MAKE_VERSION(0, 72, 0)
+#define VK_API_VERSION VK_MAKE_VERSION(0, 78, 0)
 
 #ifdef __cplusplus
 extern "C"
@@ -176,7 +176,7 @@
     VK_MEMORY_OUTPUT_SHADER_WRITE_BIT                       = 0x00000002,   // Controls output coherency of generic shader writes
     VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT                   = 0x00000004,   // Controls output coherency of color attachment writes
     VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT           = 0x00000008,   // Controls output coherency of depth/stencil attachment writes
-    VK_MEMORY_OUTPUT_COPY_BIT                               = 0x00000010,   // Controls output coherency of copy operations
+    VK_MEMORY_OUTPUT_TRANSFER_BIT                           = 0x00000010,   // Controls output coherency of transfer operations
     VK_MAX_ENUM(VkMemoryOutputFlags)
 } VkMemoryOutputFlags;
 
@@ -190,7 +190,7 @@
     VK_MEMORY_INPUT_SHADER_READ_BIT                         = 0x00000020,   // Controls input coherency of generic shader reads
     VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT                    = 0x00000040,   // Controls input coherency of color attachment reads
     VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT            = 0x00000080,   // Controls input coherency of depth/stencil attachment reads
-    VK_MEMORY_INPUT_COPY_BIT                                = 0x00000100,   // Controls input coherency of copy operations
+    VK_MEMORY_INPUT_TRANSFER_BIT                            = 0x00000100,   // Controls input coherency of transfer operations
     VK_MAX_ENUM(VkMemoryInputFlags)
 } VkMemoryInputFlags;
 
@@ -284,18 +284,18 @@
 typedef enum VkDescriptorType_
 {
     VK_DESCRIPTOR_TYPE_SAMPLER                              = 0x00000000,
-    VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE                      = 0x00000001,
-    VK_DESCRIPTOR_TYPE_TEXTURE                              = 0x00000002,
-    VK_DESCRIPTOR_TYPE_TEXTURE_BUFFER                       = 0x00000003,
-    VK_DESCRIPTOR_TYPE_IMAGE                                = 0x00000004,
-    VK_DESCRIPTOR_TYPE_IMAGE_BUFFER                         = 0x00000005,
+    VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER               = 0x00000001,
+    VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE                        = 0x00000002,
+    VK_DESCRIPTOR_TYPE_STORAGE_IMAGE                        = 0x00000003,
+    VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER                 = 0x00000004,
+    VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER                 = 0x00000005,
     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER                       = 0x00000006,
-    VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER                = 0x00000007,
+    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER                       = 0x00000007,
     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC               = 0x00000008,
-    VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER_DYNAMIC        = 0x00000009,
+    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC               = 0x00000009,
 
     VK_DESCRIPTOR_TYPE_BEGIN_RANGE                          = VK_DESCRIPTOR_TYPE_SAMPLER,
-    VK_DESCRIPTOR_TYPE_END_RANGE                            = VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER_DYNAMIC,
+    VK_DESCRIPTOR_TYPE_END_RANGE                            = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
     VK_NUM_DESCRIPTOR_TYPE                                  = (VK_DESCRIPTOR_TYPE_END_RANGE - VK_DESCRIPTOR_TYPE_BEGIN_RANGE + 1),
     VK_MAX_ENUM(VkDescriptorType)
 } VkDescriptorType;
@@ -1125,19 +1125,16 @@
 // Buffer and buffer allocation usage flags
 typedef enum VkBufferUsageFlags_
 {
-    VK_BUFFER_USAGE_GENERAL                                 = 0x00000000,   // no special usage
-    VK_BUFFER_USAGE_SHADER_ACCESS_READ_BIT                  = 0x00000001,   // Shader read (e.g. TBO, image buffer, UBO, SSBO)
-    VK_BUFFER_USAGE_SHADER_ACCESS_WRITE_BIT                 = 0x00000002,   // Shader write (e.g. image buffer, SSBO)
-    VK_BUFFER_USAGE_SHADER_ACCESS_ATOMIC_BIT                = 0x00000004,   // Shader atomic operations (e.g. image buffer, SSBO)
-    VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT                     = 0x00000008,   // used as a source for copies
-    VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT                = 0x00000010,   // used as a destination for copies
-    VK_BUFFER_USAGE_UNIFORM_READ_BIT                        = 0x00000020,   // Uniform read (UBO)
-    VK_BUFFER_USAGE_INDEX_FETCH_BIT                         = 0x00000040,   // Fixed function index fetch (index buffer)
-    VK_BUFFER_USAGE_VERTEX_FETCH_BIT                        = 0x00000080,   // Fixed function vertex fetch (VBO)
-    VK_BUFFER_USAGE_SHADER_STORAGE_BIT                      = 0x00000100,   // Shader storage buffer (SSBO)
-    VK_BUFFER_USAGE_INDIRECT_PARAMETER_FETCH_BIT            = 0x00000200,   // Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
-    VK_BUFFER_USAGE_TEXTURE_BUFFER_BIT                      = 0x00000400,   // texture buffer (TBO)
-    VK_BUFFER_USAGE_IMAGE_BUFFER_BIT                        = 0x00000800,   // image buffer (load/store)
+    VK_BUFFER_USAGE_GENERAL                                 = 0x00000000,   // No special usage
+    VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT                     = 0x00000001,   // Can be used as a source of transfer operations
+    VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT                = 0x00000002,   // Can be used as a destination of transfer operations
+    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT                = 0x00000004,   // Can be used as TBO
+    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT                = 0x00000008,   // Can be used as IBO
+    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT                      = 0x00000010,   // Can be used as UBO
+    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT                      = 0x00000020,   // Can be used as SSBO
+    VK_BUFFER_USAGE_INDEX_BUFFER_BIT                        = 0x00000040,   // Can be used as source of fixed function index fetch (index buffer)
+    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT                       = 0x00000080,   // Can be used as source of fixed function vertex fetch (VBO)
+    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT                     = 0x00000100,   // Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
     VK_MAX_ENUM(VkBufferUsageFlags)
 } VkBufferUsageFlags;
 
@@ -1151,11 +1148,11 @@
 
 typedef enum VkBufferViewType_
 {
-    VK_BUFFER_VIEW_RAW                                      = 0x00000000,   // Raw buffer without special structure (e.g. UBO, SSBO, indirect and parameter buffers)
-    VK_BUFFER_VIEW_TYPED                                    = 0x00000001,   // Typed buffer, format and channels are used (TBO, image buffer)
+    VK_BUFFER_VIEW_RAW                                      = 0x00000000,   // Raw buffer without special structure (UBO, SSBO)
+    VK_BUFFER_VIEW_FORMATTED                                = 0x00000001,   // Buffer with format (TBO, IBO)
 
     VK_BUFFER_VIEW_TYPE_BEGIN_RANGE                         = VK_BUFFER_VIEW_RAW,
-    VK_BUFFER_VIEW_TYPE_END_RANGE                           = VK_BUFFER_VIEW_TYPED,
+    VK_BUFFER_VIEW_TYPE_END_RANGE                           = VK_BUFFER_VIEW_FORMATTED,
     VK_NUM_BUFFER_VIEW_TYPE                                 = (VK_BUFFER_VIEW_TYPE_END_RANGE - VK_BUFFER_VIEW_TYPE_BEGIN_RANGE + 1),
     VK_MAX_ENUM(VkBufferViewType)
 } VkBufferViewType;
@@ -1193,16 +1190,13 @@
 typedef enum VkImageUsageFlags_
 {
     VK_IMAGE_USAGE_GENERAL                                  = 0x00000000,   // no special usage
-    VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT                   = 0x00000001,   // shader read (e.g. texture, image)
-    VK_IMAGE_USAGE_SHADER_ACCESS_WRITE_BIT                  = 0x00000002,   // shader write (e.g. image)
-    VK_IMAGE_USAGE_SHADER_ACCESS_ATOMIC_BIT                 = 0x00000004,   // shader atomic operations (e.g. image)
-    VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT                      = 0x00000008,   // used as a source for copies
-    VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT                 = 0x00000010,   // used as a destination for copies
-    VK_IMAGE_USAGE_TEXTURE_BIT                              = 0x00000020,   // opaque texture (2d, 3d, etc.)
-    VK_IMAGE_USAGE_IMAGE_BIT                                = 0x00000040,   // opaque image (2d, 3d, etc.)
-    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT                     = 0x00000080,   // framebuffer color attachment
-    VK_IMAGE_USAGE_DEPTH_STENCIL_BIT                        = 0x00000100,   // framebuffer depth/stencil
-    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT                 = 0x00000200,   // image data not needed outside of rendering.
+    VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT                      = 0x00000001,   // Can be used as a source of transfer operations
+    VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT                 = 0x00000002,   // Can be used as a destination of transfer operations
+    VK_IMAGE_USAGE_SAMPLED_BIT                              = 0x00000004,   // Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
+    VK_IMAGE_USAGE_STORAGE_BIT                              = 0x00000008,   // Can be used as storage image (STORAGE_IMAGE descriptor type)
+    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT                     = 0x00000010,   // Can be used as framebuffer color attachment
+    VK_IMAGE_USAGE_DEPTH_STENCIL_BIT                        = 0x00000020,   // Can be used as framebuffer depth/stencil attachment
+    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT                 = 0x00000040,   // Image data not needed outside of rendering
     VK_MAX_ENUM(VkImageUsageFlags)
 } VkImageUsageFlags;
 
@@ -1251,16 +1245,17 @@
 // Format capability flags
 typedef enum VkFormatFeatureFlags_
 {
-    VK_FORMAT_IMAGE_SHADER_READ_BIT                         = 0x00000001,
-    VK_FORMAT_IMAGE_SHADER_WRITE_BIT                        = 0x00000002,
-    VK_FORMAT_IMAGE_COPY_BIT                                = 0x00000004,
-    VK_FORMAT_MEMORY_SHADER_ACCESS_BIT                      = 0x00000008,
-    VK_FORMAT_COLOR_ATTACHMENT_WRITE_BIT                    = 0x00000010,
-    VK_FORMAT_COLOR_ATTACHMENT_BLEND_BIT                    = 0x00000020,
-    VK_FORMAT_DEPTH_ATTACHMENT_BIT                          = 0x00000040,
-    VK_FORMAT_STENCIL_ATTACHMENT_BIT                        = 0x00000080,
-    VK_FORMAT_MSAA_ATTACHMENT_BIT                           = 0x00000100,
-    VK_FORMAT_CONVERSION_BIT                                = 0x00000200,
+    VK_FORMAT_SAMPLED_IMAGE_BIT                             = 0x00000001,   // Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
+    VK_FORMAT_STORAGE_IMAGE_BIT                             = 0x00000002,   // Format can be used for storage images (STORAGE_IMAGE descriptor type)
+    VK_FORMAT_STORAGE_IMAGE_ATOMIC_BIT                      = 0x00000004,   // Format supports atomic operations in case it's used for storage images
+    VK_FORMAT_UNIFORM_TEXEL_BUFFER_BIT                      = 0x00000008,   // Format can be used for uniform texel buffers (TBOs)
+    VK_FORMAT_STORAGE_TEXEL_BUFFER_BIT                      = 0x00000010,   // Format can be used for storage texel buffers (IBOs)
+    VK_FORMAT_STORAGE_TEXEL_BUFFER_ATOMIC_BIT               = 0x00000020,   // Format supports atomic operations in case it's used for storage texel buffers
+    VK_FORMAT_VERTEX_BUFFER_BIT                             = 0x00000040,   // Format can be used for vertex buffers (VBOs)
+    VK_FORMAT_COLOR_ATTACHMENT_BIT                          = 0x00000080,   // Format can be used for color attachment images
+    VK_FORMAT_COLOR_ATTACHMENT_BLEND_BIT                    = 0x00000100,   // Format supports blending in case it's used for color attachment images
+    VK_FORMAT_DEPTH_STENCIL_ATTACHMENT_BIT                  = 0x00000200,   // Format can be used for depth/stencil attachment images
+    VK_FORMAT_CONVERSION_BIT                                = 0x00000400,   // Format can be used as the source or destination of format converting blits
     VK_MAX_ENUM(VkFormatFeatureFlags)
 } VkFormatFeatureFlags;
 
@@ -1808,28 +1803,28 @@
 typedef struct VkImageCopy_
 {
     VkImageSubresource                          srcSubresource;
-    VkOffset3D                                  srcOffset;
+    VkOffset3D                                  srcOffset;             // Specified in pixels for both compressed and uncompressed images
     VkImageSubresource                          destSubresource;
-    VkOffset3D                                  destOffset;
-    VkExtent3D                                  extent;
+    VkOffset3D                                  destOffset;            // Specified in pixels for both compressed and uncompressed images
+    VkExtent3D                                  extent;                // Specified in pixels for both compressed and uncompressed images
 } VkImageCopy;
 
 typedef struct VkImageBlit_
 {
     VkImageSubresource                          srcSubresource;
-    VkOffset3D                                  srcOffset;
-    VkExtent3D                                  srcExtent;
+    VkOffset3D                                  srcOffset;              // Specified in pixels for both compressed and uncompressed images
+    VkExtent3D                                  srcExtent;              // Specified in pixels for both compressed and uncompressed images
     VkImageSubresource                          destSubresource;
-    VkOffset3D                                  destOffset;
-    VkExtent3D                                  destExtent;
+    VkOffset3D                                  destOffset;             // Specified in pixels for both compressed and uncompressed images
+    VkExtent3D                                  destExtent;             // Specified in pixels for both compressed and uncompressed images
 } VkImageBlit;
 
 typedef struct VkBufferImageCopy_
 {
     VkGpuSize                                   bufferOffset;           // Specified in bytes
     VkImageSubresource                          imageSubresource;
-    VkOffset3D                                  imageOffset;           // Specified in pixels for both compressed and uncompressed images
-    VkExtent3D                                  imageExtent;           // Specified in pixels for both compressed and uncompressed images
+    VkOffset3D                                  imageOffset;            // Specified in pixels for both compressed and uncompressed images
+    VkExtent3D                                  imageExtent;            // Specified in pixels for both compressed and uncompressed images
 } VkBufferImageCopy;
 
 typedef struct VkImageResolve_
@@ -1925,7 +1920,7 @@
 typedef struct VkVertexInputBindingDescription_
 {
     uint32_t                                    binding;        // Vertex buffer binding id
-    uint32_t                                    strideInBytes;  // Distance between vertices in bytes (0  = no advancement)
+    uint32_t                                    strideInBytes;  // Distance between vertices in bytes (0 = no advancement)
 
     VkVertexInputStepRate                       stepRate;       // Rate at which binding is incremented
 } VkVertexInputBindingDescription;
@@ -2851,7 +2846,7 @@
     uint32_t                                    layoutChainSlot,
     uint32_t                                    count,
     const VkDescriptorSet*                      pDescriptorSets,
-    const uint32_t    *                         pUserData);
+    const uint32_t*                             pUserData);
 
 void VKAPI vkCmdBindIndexBuffer(
     VkCmdBuffer                                 cmdBuffer,
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 1ad7c1d..18e2738 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -677,7 +677,7 @@
             actualType = VK_DESCRIPTOR_TYPE_SAMPLER;
             break;
         case VK_STRUCTURE_TYPE_UPDATE_SAMPLER_TEXTURES:
-            actualType = VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE;
+            actualType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
             break;
         case VK_STRUCTURE_TYPE_UPDATE_IMAGES:
             actualType = ((VkUpdateImages*)pUpdateStruct)->descriptorType;
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index f41be4a..412b103 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -814,7 +814,7 @@
     vkCmdFillBuffer(cmd_.obj(), bufs[0].obj(), 0, 4, 0x11111111);
     // is this necessary?
     VkBufferMemoryBarrier memory_barrier = bufs[0].buffer_memory_barrier(
-            VK_MEMORY_OUTPUT_COPY_BIT, VK_MEMORY_INPUT_COPY_BIT, 0, 4);
+            VK_MEMORY_OUTPUT_TRANSFER_BIT, VK_MEMORY_INPUT_TRANSFER_BIT, 0, 4);
     VkBufferMemoryBarrier *pmemory_barrier = &memory_barrier;
 
     VkPipeEvent set_events[] = { VK_PIPE_EVENT_TRANSFER_COMPLETE };
@@ -832,7 +832,7 @@
     vkCmdCopyBuffer(cmd_.obj(), bufs[0].obj(), bufs[1].obj(), 1, &region);
 
     memory_barrier = bufs[1].buffer_memory_barrier(
-            VK_MEMORY_OUTPUT_COPY_BIT, VK_MEMORY_INPUT_COPY_BIT, 0, 4);
+            VK_MEMORY_OUTPUT_TRANSFER_BIT, VK_MEMORY_INPUT_TRANSFER_BIT, 0, 4);
     pmemory_barrier = &memory_barrier;
     pipeline_barrier.sType = VK_STRUCTURE_TYPE_PIPELINE_BARRIER;
     pipeline_barrier.eventCount = 1;
@@ -852,7 +852,7 @@
     // Additional commands could go into the buffer here before the wait.
 
     memory_barrier = bufs[1].buffer_memory_barrier(
-            VK_MEMORY_OUTPUT_COPY_BIT, VK_MEMORY_INPUT_CPU_READ_BIT, 0, 4);
+            VK_MEMORY_OUTPUT_TRANSFER_BIT, VK_MEMORY_INPUT_CPU_READ_BIT, 0, 4);
     pmemory_barrier = &memory_barrier;
     VkEventWaitInfo wait_info = {};
     wait_info.sType = VK_STRUCTURE_TYPE_EVENT_WAIT_INFO;
@@ -973,7 +973,7 @@
     virtual void SetUp()
     {
         VkCmdBlitTest::SetUp();
-        init_test_formats(VK_FORMAT_IMAGE_COPY_BIT);
+        init_test_formats(VK_FORMAT_COLOR_ATTACHMENT_BIT);
         ASSERT_NE(true, test_formats_.empty());
     }
 
@@ -1041,7 +1041,7 @@
     virtual void SetUp()
     {
         VkCmdBlitTest::SetUp();
-        init_test_formats(VK_FORMAT_IMAGE_COPY_BIT);
+        init_test_formats(VK_FORMAT_COLOR_ATTACHMENT_BIT);
         ASSERT_NE(true, test_formats_.empty());
     }
 
@@ -1109,7 +1109,7 @@
     virtual void SetUp()
     {
         VkCmdBlitTest::SetUp();
-        init_test_formats(VK_FORMAT_IMAGE_COPY_BIT);
+        init_test_formats(VK_FORMAT_COLOR_ATTACHMENT_BIT);
         ASSERT_NE(true, test_formats_.empty());
     }
 
@@ -1357,7 +1357,7 @@
                 VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
                 VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
                 VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-                VK_MEMORY_OUTPUT_COPY_BIT;
+                VK_MEMORY_OUTPUT_TRANSFER_BIT;
         const VkFlags all_cache_inputs =
                 VK_MEMORY_INPUT_CPU_READ_BIT |
                 VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
@@ -1367,7 +1367,7 @@
                 VK_MEMORY_INPUT_SHADER_READ_BIT |
                 VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT |
                 VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-                VK_MEMORY_INPUT_COPY_BIT;
+                VK_MEMORY_INPUT_TRANSFER_BIT;
 
         std::vector<VkImageMemoryBarrier> to_clear;
         std::vector<VkImageMemoryBarrier *> p_to_clear;
@@ -1517,8 +1517,7 @@
     virtual void SetUp()
     {
         VkCmdBlitTest::SetUp();
-        init_test_formats(VK_FORMAT_DEPTH_ATTACHMENT_BIT |
-                          VK_FORMAT_STENCIL_ATTACHMENT_BIT);
+        init_test_formats(VK_FORMAT_DEPTH_STENCIL_ATTACHMENT_BIT);
         ASSERT_NE(true, test_formats_.empty());
     }
 
@@ -1588,7 +1587,7 @@
                 VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
                 VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
                 VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-                VK_MEMORY_OUTPUT_COPY_BIT;
+                VK_MEMORY_OUTPUT_TRANSFER_BIT;
         const VkFlags all_cache_inputs =
                 VK_MEMORY_INPUT_CPU_READ_BIT |
                 VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
@@ -1598,7 +1597,7 @@
                 VK_MEMORY_INPUT_SHADER_READ_BIT |
                 VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT |
                 VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-                VK_MEMORY_INPUT_COPY_BIT;
+                VK_MEMORY_INPUT_TRANSFER_BIT;
 
         std::vector<VkImageMemoryBarrier> to_clear;
         std::vector<VkImageMemoryBarrier *> p_to_clear;
diff --git a/tests/image_tests.cpp b/tests/image_tests.cpp
index 57d0418..ee4e55e 100644
--- a/tests/image_tests.cpp
+++ b/tests/image_tests.cpp
@@ -178,10 +178,10 @@
     imageCreateInfo.extent.depth = 1;
     imageCreateInfo.mipLevels = mipCount;
     imageCreateInfo.samples = 1;
-    if (image_fmt.linearTilingFeatures & VK_FORMAT_IMAGE_SHADER_READ_BIT) {
+    if (image_fmt.linearTilingFeatures & VK_FORMAT_SAMPLED_IMAGE_BIT) {
         imageCreateInfo.tiling = VK_LINEAR_TILING;
     }
-    else if (image_fmt.optimalTilingFeatures & VK_FORMAT_IMAGE_SHADER_READ_BIT) {
+    else if (image_fmt.optimalTilingFeatures & VK_FORMAT_SAMPLED_IMAGE_BIT) {
         imageCreateInfo.tiling = VK_OPTIMAL_TILING;
     }
     else {
@@ -189,14 +189,19 @@
     }
 
     // Image usage flags
-    //    typedef enum VkImageUsageFlags_
-    //    {
-    //        VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT                  = 0x00000001,
-    //        VK_IMAGE_USAGE_SHADER_ACCESS_WRITE_BIT                 = 0x00000002,
-    //        VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT                    = 0x00000004,
     //        VK_IMAGE_USAGE_DEPTH_STENCIL_BIT                       = 0x00000008,
+    //typedef enum VkImageUsageFlags_
+    //{
+    //    VK_IMAGE_USAGE_GENERAL                                  = 0x00000000,   // no special usage
+    //    VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT                      = 0x00000001,   // Can be used as a source of transfer operations
+    //    VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT                 = 0x00000002,   // Can be used as a destination of transfer operations
+    //    VK_IMAGE_USAGE_SAMPLED_BIT                              = 0x00000004,   // Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
+    //    VK_IMAGE_USAGE_STORAGE_BIT                              = 0x00000008,   // Can be used as storage image (STORAGE_IMAGE descriptor type)
+    //    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT                     = 0x00000010,   // Can be used as framebuffer color attachment
+    //    VK_IMAGE_USAGE_DEPTH_STENCIL_BIT                        = 0x00000020,   // Can be used as framebuffer depth/stencil attachment
+    //    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT                 = 0x00000040,   // Image data not needed outside of rendering
     //    } VkImageUsageFlags;
-    imageCreateInfo.usage = VK_IMAGE_USAGE_SHADER_ACCESS_WRITE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+    imageCreateInfo.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
 
     //    VkResult VKAPI vkCreateImage(
     //        VkDevice                                  device,
diff --git a/tests/init.cpp b/tests/init.cpp
index 686da4c..ecd3522 100644
--- a/tests/init.cpp
+++ b/tests/init.cpp
@@ -570,15 +570,7 @@
     imageCreateInfo.samples = 1;
     imageCreateInfo.tiling = VK_LINEAR_TILING;
 
-// Image usage flags
-//    typedef enum VkImageUsageFlags_
-//    {
-//        VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT                  = 0x00000001,
-//        VK_IMAGE_USAGE_SHADER_ACCESS_WRITE_BIT                 = 0x00000002,
-//        VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT                    = 0x00000004,
-//        VK_IMAGE_USAGE_DEPTH_STENCIL_BIT                       = 0x00000008,
-//    } VkImageUsageFlags;
-    imageCreateInfo.usage = VK_IMAGE_USAGE_SHADER_ACCESS_WRITE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+    imageCreateInfo.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
 
 //    VkResult VKAPI vkCreateImage(
 //        VkDevice                                  device,
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 64bdae0..d3060de 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -203,7 +203,6 @@
     for (i = 0; i < targets; i++) {
         VkImageObj *img = new VkImageObj(m_device);
         img->init(m_width, m_height, m_render_target_fmt,
-                VK_IMAGE_USAGE_SHADER_ACCESS_WRITE_BIT |
                 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
         m_colorBindings[i].view  = img->targetView();
         m_colorBindings[i].layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
@@ -284,7 +283,7 @@
 {
     /* request a descriptor but do not update it */
     VkDescriptorTypeCount tc = {};
-    tc.type = VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER;
+    tc.type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
     tc.count = 1;
     m_type_counts.push_back(tc);
 
@@ -310,7 +309,7 @@
 int VkDescriptorSetObj::AppendSamplerTexture( VkSamplerObj* sampler, VkTextureObj* texture)
 {
     VkDescriptorTypeCount tc = {};
-    tc.type = VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE;
+    tc.type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
     tc.count = 1;
     m_type_counts.push_back(tc);
 
@@ -449,7 +448,7 @@
             VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
             VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-            VK_MEMORY_OUTPUT_COPY_BIT;
+            VK_MEMORY_OUTPUT_TRANSFER_BIT;
     const VkFlags all_cache_inputs =
             VK_MEMORY_INPUT_CPU_READ_BIT |
             VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
@@ -459,7 +458,7 @@
             VK_MEMORY_INPUT_SHADER_READ_BIT |
             VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT |
             VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-            VK_MEMORY_INPUT_COPY_BIT;
+            VK_MEMORY_INPUT_TRANSFER_BIT;
 
     if (image_layout == m_imageInfo.layout) {
         return;
@@ -467,21 +466,21 @@
 
     switch (image_layout) {
     case VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL:
-        output_mask = VK_MEMORY_OUTPUT_COPY_BIT;
-        input_mask = VK_MEMORY_INPUT_SHADER_READ_BIT | VK_MEMORY_INPUT_COPY_BIT;
+        output_mask = VK_MEMORY_OUTPUT_TRANSFER_BIT;
+        input_mask = VK_MEMORY_INPUT_SHADER_READ_BIT | VK_MEMORY_INPUT_TRANSFER_BIT;
         break;
 
     case VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL:
-        output_mask = VK_MEMORY_OUTPUT_COPY_BIT;
-        input_mask = VK_MEMORY_INPUT_SHADER_READ_BIT | VK_MEMORY_INPUT_COPY_BIT;
+        output_mask = VK_MEMORY_OUTPUT_TRANSFER_BIT;
+        input_mask = VK_MEMORY_INPUT_SHADER_READ_BIT | VK_MEMORY_INPUT_TRANSFER_BIT;
         break;
 
     case VK_IMAGE_LAYOUT_CLEAR_OPTIMAL:
         break;
 
     case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
-        output_mask = VK_MEMORY_OUTPUT_COPY_BIT;
-        input_mask = VK_MEMORY_INPUT_SHADER_READ_BIT | VK_MEMORY_INPUT_COPY_BIT;
+        output_mask = VK_MEMORY_OUTPUT_TRANSFER_BIT;
+        input_mask = VK_MEMORY_INPUT_SHADER_READ_BIT | VK_MEMORY_INPUT_TRANSFER_BIT;
         break;
 
     default:
@@ -514,12 +513,8 @@
 
 bool VkImageObj::IsCompatible(VkFlags usage, VkFlags features)
 {
-    if ((usage & VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT) &&
-            !(features & VK_FORMAT_IMAGE_SHADER_READ_BIT))
-        return false;
-
-    if ((usage & VK_IMAGE_USAGE_SHADER_ACCESS_WRITE_BIT) &&
-            !(features & VK_FORMAT_IMAGE_SHADER_WRITE_BIT))
+    if ((usage & VK_IMAGE_USAGE_SAMPLED_BIT) &&
+            !(features & VK_FORMAT_SAMPLED_IMAGE_BIT))
         return false;
 
     return true;
@@ -580,7 +575,7 @@
 
     vk_testing::Image::init(*m_device, imageCreateInfo);
 
-    if (usage & VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT) {
+    if (usage & VK_IMAGE_USAGE_SAMPLED_BIT) {
         SetLayout(VK_IMAGE_ASPECT_COLOR, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
     } else {
         SetLayout(VK_IMAGE_ASPECT_COLOR, VK_IMAGE_LAYOUT_GENERAL);
@@ -688,7 +683,7 @@
     view.minLod = 0.0f;
 
     /* create image */
-    init(16, 16, tex_format, VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT, VK_OPTIMAL_TILING);
+    init(16, 16, tex_format, VK_IMAGE_USAGE_SAMPLED_BIT, VK_OPTIMAL_TILING);
 
     /* create image view */
     view.image = obj();
@@ -899,7 +894,7 @@
     VkBufferViewCreateInfo view_info = {};
     view_info.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
     view_info.buffer = obj();
-    view_info.viewType = VK_BUFFER_VIEW_TYPED;
+    view_info.viewType = VK_BUFFER_VIEW_FORMATTED;
     view_info.format = viewFormat;
     view_info.offset = 0;
     view_info.range  = allocationSize;
@@ -1201,7 +1196,7 @@
         VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
         VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
         VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-        VK_MEMORY_OUTPUT_COPY_BIT;
+        VK_MEMORY_OUTPUT_TRANSFER_BIT;
     const VkFlags input_mask = 0;
 
     // whatever we want to do, we do it to the whole buffer
@@ -1283,7 +1278,7 @@
         VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
         VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
         VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-        VK_MEMORY_OUTPUT_COPY_BIT;
+        VK_MEMORY_OUTPUT_TRANSFER_BIT;
     const VkFlags input_mask =
         VK_MEMORY_INPUT_CPU_READ_BIT |
         VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
@@ -1293,7 +1288,7 @@
         VK_MEMORY_INPUT_SHADER_READ_BIT |
         VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT |
         VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-        VK_MEMORY_INPUT_COPY_BIT;
+        VK_MEMORY_INPUT_TRANSFER_BIT;
 
     VkImageSubresourceRange srRange = {};
     srRange.aspect = VK_IMAGE_ASPECT_COLOR;
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 26b95d4..7cb3e17 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -196,7 +196,7 @@
             VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
             VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-            VK_MEMORY_OUTPUT_COPY_BIT,
+            VK_MEMORY_OUTPUT_TRANSFER_BIT,
         VkFlags inputMask =
             VK_MEMORY_INPUT_CPU_READ_BIT |
             VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
@@ -206,7 +206,7 @@
             VK_MEMORY_INPUT_SHADER_READ_BIT |
             VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT |
             VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
-            VK_MEMORY_INPUT_COPY_BIT);
+            VK_MEMORY_INPUT_TRANSFER_BIT);
 
     void Bind(VkCmdBuffer cmdBuffer, VkGpuSize offset, uint32_t binding);
 
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index 44e1a1a..719a4bf 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -407,7 +407,7 @@
     VkSubresourceLayout subresource_layout(const VkImageSubresource &subres) const;
 
     bool transparent() const;
-    bool copyable() const { return (format_features_ & VK_FORMAT_IMAGE_COPY_BIT); }
+    bool copyable() const { return (format_features_ & VK_FORMAT_SAMPLED_IMAGE_BIT); }
 
     VkImageSubresourceRange subresource_range(VkImageAspect aspect) const { return subresource_range(create_info_, aspect); }
     VkExtent3D extent() const { return create_info_.extent; }