diff --git a/include/vkLayer.h b/include/vkLayer.h
index ec6e8ac..0b629b8 100644
--- a/include/vkLayer.h
+++ b/include/vkLayer.h
@@ -46,7 +46,8 @@
     PFN_vkSetMemoryPriority SetMemoryPriority;
     PFN_vkMapMemory MapMemory;
     PFN_vkUnmapMemory UnmapMemory;
-    PFN_vkFlushMappedMemory FlushMappedMemory;
+    PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges;
+    PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges;
     PFN_vkPinSystemMemory PinSystemMemory;
     PFN_vkGetMultiDeviceCompatibility GetMultiDeviceCompatibility;
     PFN_vkOpenSharedMemory OpenSharedMemory;
diff --git a/include/vulkan.h b/include/vulkan.h
index 650d348..f4ac935 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, 91, 0)
+#define VK_API_VERSION VK_MAKE_VERSION(0, 92, 0)
 
 #ifdef __cplusplus
 extern "C"
@@ -856,8 +856,9 @@
     VK_STRUCTURE_TYPE_UPDATE_AS_COPY                        = 50,
     VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO                  = 51,
     VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO           = 52,
+    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE                   = 53,
 
-    VK_ENUM_RANGE(STRUCTURE_TYPE, APPLICATION_INFO, PIPELINE_LAYOUT_CREATE_INFO)
+    VK_ENUM_RANGE(STRUCTURE_TYPE, APPLICATION_INFO, MAPPED_MEMORY_RANGE)
 } VkStructureType;
 
 // Object type enumerant
@@ -980,7 +981,8 @@
 {
     VK_MEMORY_PROPERTY_DEVICE_ONLY                          = 0,            // If otherwise stated, then allocate memory on device
     VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT                     = VK_BIT(0),    // Memory should be mappable by host
-    VK_MEMORY_PROPERTY_HOST_DEVICE_COHERENT_BIT             = VK_BIT(1),    // Memory should be coherent between host and device accesses
+    VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT                = VK_BIT(1),    // Memory may not have i/o coherency so vkFlushMappedMemoryRanges and
+                                                                            // vkInvalidateMappedMemoryRanges must be used flush/invalidate host cache
     VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT                    = VK_BIT(2),    // Memory should not be cached by the host
     VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT              = VK_BIT(3),    // Memory should support host write combining
     VK_MEMORY_PROPERTY_PREFER_HOST_LOCAL                    = VK_BIT(4),    // If set, prefer host access
@@ -991,7 +993,7 @@
 typedef VkFlags VkMemoryOutputFlags;
 typedef enum VkMemoryOutputFlagBits_
 {
-    VK_MEMORY_OUTPUT_CPU_WRITE_BIT                          = VK_BIT(0),    // Controls output coherency of CPU writes
+    VK_MEMORY_OUTPUT_HOST_WRITE_BIT                         = VK_BIT(0),    // Controls output coherency of host writes
     VK_MEMORY_OUTPUT_SHADER_WRITE_BIT                       = VK_BIT(1),    // Controls output coherency of generic shader writes
     VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT                   = VK_BIT(2),    // Controls output coherency of color attachment writes
     VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT           = VK_BIT(3),    // Controls output coherency of depth/stencil attachment writes
@@ -1002,7 +1004,7 @@
 typedef VkFlags VkMemoryInputFlags;
 typedef enum VkMemoryInputFlagBits_
 {
-    VK_MEMORY_INPUT_CPU_READ_BIT                            = VK_BIT(0),    // Controls input coherency of CPU reads
+    VK_MEMORY_INPUT_HOST_READ_BIT                           = VK_BIT(0),    // Controls input coherency of host reads
     VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT                    = VK_BIT(1),    // Controls input coherency of indirect command reads
     VK_MEMORY_INPUT_INDEX_FETCH_BIT                         = VK_BIT(2),    // Controls input coherency of index fetches
     VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT              = VK_BIT(3),    // Controls input coherency of vertex attribute fetches
@@ -1405,9 +1407,17 @@
     VkDeviceSize                                granularity;                // Granularity on which vkQueueBindObjectMemoryRange can bind sub-ranges of memory specified in bytes (usually the page size)
     VkMemoryPropertyFlags                       memPropsAllowed;            // Allowed memory property flags
     VkMemoryPropertyFlags                       memPropsRequired;           // Required memory property flags
-    
 } VkMemoryRequirements;
 
+typedef struct VkMappedMemoryRange_
+{
+    VkStructureType                             sType;                      // Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
+    const void*                                 pNext;                      // Pointer to next structure
+    VkDeviceMemory                              mem;                        // Mapped memory object
+    VkDeviceSize                                offset;                     // Offset within the mapped memory the range starts from
+    VkDeviceSize                                size;                       // Size of the range within the mapped memory
+} VkMappedMemoryRange;
+
 typedef struct VkFormatProperties_
 {
     VkFormatFeatureFlags                        linearTilingFeatures;       // Format features in case of linear tiling
@@ -2145,7 +2155,8 @@
 typedef VkResult (VKAPI *PFN_vkSetMemoryPriority)(VkDevice device, VkDeviceMemory mem, VkMemoryPriority priority);
 typedef VkResult (VKAPI *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
 typedef VkResult (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory mem);
-typedef VkResult (VKAPI *PFN_vkFlushMappedMemory)(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size);
+typedef VkResult (VKAPI *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
+typedef VkResult (VKAPI *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
 typedef VkResult (VKAPI *PFN_vkPinSystemMemory)(VkDevice device, const void* pSysMem, size_t memSize, VkDeviceMemory* pMem);
 typedef VkResult (VKAPI *PFN_vkGetMultiDeviceCompatibility)(VkPhysicalDevice physicalDevice0, VkPhysicalDevice physicalDevice1, VkPhysicalDeviceCompatibilityInfo* pInfo);
 typedef VkResult (VKAPI *PFN_vkOpenSharedMemory)(VkDevice device, const VkMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem);
@@ -2360,11 +2371,15 @@
     VkDevice                                    device,
     VkDeviceMemory                              mem);
 
-VkResult VKAPI vkFlushMappedMemory(
+VkResult VKAPI vkFlushMappedMemoryRanges(
     VkDevice                                    device,
-    VkDeviceMemory                              mem,
-    VkDeviceSize                                offset,
-    VkDeviceSize                                size);
+    uint32_t                                    memRangeCount,
+    const VkMappedMemoryRange*                  pMemRanges);
+
+VkResult VKAPI vkInvalidateMappedMemoryRanges(
+    VkDevice                                    device,
+    uint32_t                                    memRangeCount,
+    const VkMappedMemoryRange*                  pMemRanges);
 
 VkResult VKAPI vkPinSystemMemory(
     VkDevice                                    device,
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index f780714..01328bf 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -413,10 +413,23 @@
     return result;
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkFlushMappedMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size)
+VK_LAYER_EXPORT VkResult VKAPI vkFlushMappedMemoryRanges(
+        VkDevice device,
+        uint32_t memRangeCount,
+        const VkMappedMemoryRange* pMemRanges)
 {
 
-    VkResult result = nextTable.FlushMappedMemory(device, mem, offset, size);
+    VkResult result = nextTable.FlushMappedMemoryRanges(device, memRangeCount, pMemRanges);
+    return result;
+}
+
+VK_LAYER_EXPORT VkResult VKAPI vkInvalidateMappedMemoryRanges(
+        VkDevice device,
+        uint32_t memRangeCount,
+        const VkMappedMemoryRange* pMemRanges)
+{
+
+    VkResult result = nextTable.InvalidateMappedMemoryRanges(device, memRangeCount, pMemRanges);
     return result;
 }
 
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index 5e50678..6ab7715 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -847,7 +847,7 @@
     // Additional commands could go into the buffer here before the wait.
 
     memory_barrier = bufs[1].buffer_memory_barrier(
-            VK_MEMORY_OUTPUT_TRANSFER_BIT, VK_MEMORY_INPUT_CPU_READ_BIT, 0, 4);
+            VK_MEMORY_OUTPUT_TRANSFER_BIT, VK_MEMORY_INPUT_HOST_READ_BIT, 0, 4);
     pmemory_barrier = &memory_barrier;
     vkCmdWaitEvents(cmd_.obj(), VK_WAIT_EVENT_TOP_OF_PIPE, 1, &event, 1, (const void **)&pmemory_barrier);
 
@@ -1350,13 +1350,13 @@
         img.init(dev_, img_info, reqs);
         add_memory_ref(img);
         const VkFlags all_cache_outputs =
-                VK_MEMORY_OUTPUT_CPU_WRITE_BIT |
+                VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
                 VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
                 VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
                 VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
                 VK_MEMORY_OUTPUT_TRANSFER_BIT;
         const VkFlags all_cache_inputs =
-                VK_MEMORY_INPUT_CPU_READ_BIT |
+                VK_MEMORY_INPUT_HOST_READ_BIT |
                 VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
                 VK_MEMORY_INPUT_INDEX_FETCH_BIT |
                 VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT |
@@ -1569,13 +1569,13 @@
         img.init(dev_, img_info, reqs);
         add_memory_ref(img);
         const VkFlags all_cache_outputs =
-                VK_MEMORY_OUTPUT_CPU_WRITE_BIT |
+                VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
                 VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
                 VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
                 VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
                 VK_MEMORY_OUTPUT_TRANSFER_BIT;
         const VkFlags all_cache_inputs =
-                VK_MEMORY_INPUT_CPU_READ_BIT |
+                VK_MEMORY_INPUT_HOST_READ_BIT |
                 VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
                 VK_MEMORY_INPUT_INDEX_FETCH_BIT |
                 VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT |
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index ae62008..580569b 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -419,13 +419,13 @@
         VkCommandBufferObj *cmd_buf,
         VkImageAspect aspect,
         VkFlags output_mask /*=
-            VK_MEMORY_OUTPUT_CPU_WRITE_BIT |
+            VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
             VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
             VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_COPY_BIT*/,
         VkFlags input_mask /*=
-            VK_MEMORY_INPUT_CPU_READ_BIT |
+            VK_MEMORY_INPUT_HOST_READ_BIT |
             VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
             VK_MEMORY_INPUT_INDEX_FETCH_BIT |
             VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT |
@@ -455,13 +455,13 @@
 {
     VkFlags output_mask, input_mask;
     const VkFlags all_cache_outputs =
-            VK_MEMORY_OUTPUT_CPU_WRITE_BIT |
+            VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
             VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
             VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_TRANSFER_BIT;
     const VkFlags all_cache_inputs =
-            VK_MEMORY_INPUT_CPU_READ_BIT |
+            VK_MEMORY_INPUT_HOST_READ_BIT |
             VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
             VK_MEMORY_INPUT_INDEX_FETCH_BIT |
             VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT |
@@ -792,13 +792,13 @@
 
 void VkConstantBufferObj::BufferMemoryBarrier(
         VkFlags outputMask /*=
-            VK_MEMORY_OUTPUT_CPU_WRITE_BIT |
+            VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
             VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
             VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_COPY_BIT*/,
         VkFlags inputMask /*=
-            VK_MEMORY_INPUT_CPU_READ_BIT |
+            VK_MEMORY_INPUT_HOST_READ_BIT |
             VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
             VK_MEMORY_INPUT_INDEX_FETCH_BIT |
             VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT |
@@ -1196,7 +1196,7 @@
 {
     uint32_t i;
     const VkFlags output_mask =
-        VK_MEMORY_OUTPUT_CPU_WRITE_BIT |
+        VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
         VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
         VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
         VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
@@ -1271,13 +1271,13 @@
 {
     uint32_t i;
     const VkFlags output_mask =
-        VK_MEMORY_OUTPUT_CPU_WRITE_BIT |
+        VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
         VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
         VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
         VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
         VK_MEMORY_OUTPUT_TRANSFER_BIT;
     const VkFlags input_mask =
-        VK_MEMORY_INPUT_CPU_READ_BIT |
+        VK_MEMORY_INPUT_HOST_READ_BIT |
         VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
         VK_MEMORY_INPUT_INDEX_FETCH_BIT |
         VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT |
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 8cce75c..587dba7 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -194,13 +194,13 @@
     ~VkConstantBufferObj();
     void BufferMemoryBarrier(
         VkFlags outputMask =
-            VK_MEMORY_OUTPUT_CPU_WRITE_BIT |
+            VK_MEMORY_OUTPUT_HOST_WRITE_BIT |
             VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
             VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
             VK_MEMORY_OUTPUT_TRANSFER_BIT,
         VkFlags inputMask =
-            VK_MEMORY_INPUT_CPU_READ_BIT |
+            VK_MEMORY_INPUT_HOST_READ_BIT |
             VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
             VK_MEMORY_INPUT_INDEX_FETCH_BIT |
             VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT |
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index 680d3c4..326a47e 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -1170,7 +1170,7 @@
             using_line += '    // validate_memory_mapping_status(pMemRefs, memRefCount);\n'
             using_line += '    // validate_mem_ref_count(memRefCount);\n'
             using_line += '    loader_platform_thread_unlock_mutex(&objLock);\n'
-        elif 'MemoryRange' in proto.name:
+        elif 'QueueBindObjectMemoryRange' in proto.name or 'QueueBindImageMemoryRange' in proto.name:
             using_line = '    loader_platform_thread_lock_mutex(&objLock);\n'
             using_line += '    if (validateQueueFlags(queue) == VK_FALSE) {\n'
             using_line += '        char str[1024];\n'
diff --git a/vulkan.py b/vulkan.py
index 7aad8c9..96c46e1 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -321,11 +321,15 @@
             [Param("VkDevice", "device"),
              Param("VkDeviceMemory", "mem")]),
 
-        Proto("VkResult", "FlushMappedMemory",
+        Proto("VkResult", "FlushMappedMemoryRanges",
             [Param("VkDevice", "device"),
-             Param("VkDeviceMemory", "mem"),
-             Param("VkDeviceSize", "offset"),
-             Param("VkDeviceSize", "size")]),
+             Param("uint32_t", "memRangeCount"),
+             Param("const VkMappedMemoryRange*", "pMemRanges")]),
+
+        Proto("VkResult", "InvalidateMappedMemoryRanges",
+            [Param("VkDevice", "device"),
+             Param("uint32_t", "memRangeCount"),
+             Param("const VkMappedMemoryRange*", "pMemRanges")]),
 
         Proto("VkResult", "PinSystemMemory",
             [Param("VkDevice", "device"),
