diff --git a/demos/cube.c b/demos/cube.c
index 9edb8de..608c480 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -2228,18 +2228,18 @@
 
     /* Look for validation layers */
     VkBool32 validation_found = 0;
-    err = vkGetGlobalLayerProperties(&instance_layer_count, NULL);
+    err = vkEnumerateInstanceLayerProperties(&instance_layer_count, NULL);
     assert(!err);
 
     instance_layers = malloc(sizeof(VkLayerProperties) * instance_layer_count);
-    err = vkGetGlobalLayerProperties(&instance_layer_count, instance_layers);
+    err = vkEnumerateInstanceLayerProperties(&instance_layer_count, instance_layers);
     assert(!err);
 
     if (demo->validate) {
         validation_found = demo_check_layers(ARRAY_SIZE(instance_validation_layers), instance_validation_layers,
                                              instance_layer_count, instance_layers);
         if (!validation_found) {
-            ERR_EXIT("vkGetGlobalLayerProperties failed to find"
+            ERR_EXIT("vkEnumerateInstanceLayerProperties failed to find"
                      "required validation layer.\n\n"
                      "Please look at the Getting Started guide for additional "
                      "information.\n",
@@ -2248,13 +2248,13 @@
         enabled_layer_count = ARRAY_SIZE(instance_validation_layers);
     }
 
-    err = vkGetGlobalExtensionProperties(NULL, &instance_extension_count, NULL);
+    err = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, NULL);
     assert(!err);
 
     VkBool32 WSIextFound = 0;
     memset(extension_names, 0, sizeof(extension_names));
     instance_extensions = malloc(sizeof(VkExtensionProperties) * instance_extension_count);
-    err = vkGetGlobalExtensionProperties(NULL, &instance_extension_count, instance_extensions);
+    err = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, instance_extensions);
     assert(!err);
     for (uint32_t i = 0; i < instance_extension_count; i++) {
         if (!strcmp("VK_EXT_KHR_swapchain", instance_extensions[i].extName)) {
@@ -2269,7 +2269,7 @@
         assert(enabled_extension_count < 64);
     }
     if (!WSIextFound) {
-        ERR_EXIT("vkGetGlobalExtensionProperties failed to find the "
+        ERR_EXIT("vkEnumerateInstanceExtensionProperties failed to find the "
                  "\"VK_EXT_KHR_swapchain\" extension.\n\nDo you have a compatible "
                  "Vulkan installable client driver (ICD) installed?\nPlease "
                  "look at the Getting Started guide for additional "
@@ -2336,18 +2336,18 @@
     validation_found = 0;
     enabled_layer_count = 0;
     uint32_t device_layer_count = 0;
-    err = vkGetPhysicalDeviceLayerProperties(demo->gpu, &device_layer_count, NULL);
+    err = vkEnumerateDeviceLayerProperties(demo->gpu, &device_layer_count, NULL);
     assert(!err);
 
     device_layers = malloc(sizeof(VkLayerProperties) * device_layer_count);
-    err = vkGetPhysicalDeviceLayerProperties(demo->gpu, &device_layer_count, device_layers);
+    err = vkEnumerateDeviceLayerProperties(demo->gpu, &device_layer_count, device_layers);
     assert(!err);
 
     if (demo->validate) {
         validation_found = demo_check_layers(ARRAY_SIZE(device_validation_layers), device_validation_layers,
                                              device_layer_count, device_layers);
         if (!validation_found) {
-            ERR_EXIT("vkGetPhysicalDeviceLayerProperties failed to find"
+            ERR_EXIT("vkEnumerateDeviceLayerProperties failed to find"
                      "a required validation layer.\n\n"
                      "Please look at the Getting Started guide for additional "
                      "information.\n",
@@ -2358,7 +2358,7 @@
 
     uint32_t device_extension_count = 0;
     VkExtensionProperties *device_extensions = NULL;
-    err = vkGetPhysicalDeviceExtensionProperties(
+    err = vkEnumerateDeviceExtensionProperties(
               demo->gpu, NULL, &device_extension_count, NULL);
     assert(!err);
 
@@ -2366,7 +2366,7 @@
     enabled_extension_count = 0;
     memset(extension_names, 0, sizeof(extension_names));
     device_extensions = malloc(sizeof(VkExtensionProperties) * device_extension_count);
-    err = vkGetPhysicalDeviceExtensionProperties(
+    err = vkEnumerateDeviceExtensionProperties(
               demo->gpu, NULL, &device_extension_count, device_extensions);
     assert(!err);
 
@@ -2378,7 +2378,7 @@
         assert(enabled_extension_count < 64);
     }
     if (!WSIextFound) {
-        ERR_EXIT("vkGetPhysicalDeviceExtensionProperties failed to find the "
+        ERR_EXIT("vkEnumerateDeviceExtensionProperties failed to find the "
                  "\"VK_EXT_KHR_device_swapchain\" extension.\n\nDo you have a compatible "
                  "Vulkan installable client driver (ICD) installed?\nPlease "
                  "look at the Getting Started guide for additional "
diff --git a/demos/tri.c b/demos/tri.c
index 78a5712..8aa942e 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -1749,18 +1749,18 @@
 
     /* Look for validation layers */
     VkBool32 validation_found = 0;
-    err = vkGetGlobalLayerProperties(&instance_layer_count, NULL);
+    err = vkEnumerateInstanceLayerProperties(&instance_layer_count, NULL);
     assert(!err);
 
     instance_layers = malloc(sizeof(VkLayerProperties) * instance_layer_count);
-    err = vkGetGlobalLayerProperties(&instance_layer_count, instance_layers);
+    err = vkEnumerateInstanceLayerProperties(&instance_layer_count, instance_layers);
     assert(!err);
 
     if (demo->validate) {
         validation_found = demo_check_layers(ARRAY_SIZE(instance_validation_layers), instance_validation_layers,
                                              instance_layer_count, instance_layers);
         if (!validation_found) {
-            ERR_EXIT("vkGetGlobalLayerProperties failed to find"
+            ERR_EXIT("vkEnumerateInstanceLayerProperties failed to find"
                      "required validation layer.\n\n"
                      "Please look at the Getting Started guide for additional "
                      "information.\n",
@@ -1769,13 +1769,13 @@
         enabled_layer_count = ARRAY_SIZE(instance_validation_layers);
     }
 
-    err = vkGetGlobalExtensionProperties(NULL, &instance_extension_count, NULL);
+    err = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, NULL);
     assert(!err);
 
     VkBool32 WSIextFound = 0;
     memset(extension_names, 0, sizeof(extension_names));
     instance_extensions = malloc(sizeof(VkExtensionProperties) * instance_extension_count);
-    err = vkGetGlobalExtensionProperties(NULL, &instance_extension_count, instance_extensions);
+    err = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, instance_extensions);
     assert(!err);
     for (uint32_t i = 0; i < instance_extension_count; i++) {
         if (!strcmp("VK_EXT_KHR_swapchain", instance_extensions[i].extName)) {
@@ -1790,7 +1790,7 @@
         assert(enabled_extension_count < 64);
     }
     if (!WSIextFound) {
-        ERR_EXIT("vkGetGlobalExtensionProperties failed to find the "
+        ERR_EXIT("vkEnumerateInstanceExtensionProperties failed to find the "
                  "\"VK_EXT_KHR_swapchain\" extension.\n\nDo you have a compatible "
                  "Vulkan installable client driver (ICD) installed?\nPlease "
                  "look at the Getting Started guide for additional "
@@ -1861,18 +1861,18 @@
     validation_found = 0;
     enabled_layer_count = 0;
     uint32_t device_layer_count = 0;
-    err = vkGetPhysicalDeviceLayerProperties(demo->gpu, &device_layer_count, NULL);
+    err = vkEnumerateDeviceLayerProperties(demo->gpu, &device_layer_count, NULL);
     assert(!err);
 
     device_layers = malloc(sizeof(VkLayerProperties) * device_layer_count);
-    err = vkGetPhysicalDeviceLayerProperties(demo->gpu, &device_layer_count, device_layers);
+    err = vkEnumerateDeviceLayerProperties(demo->gpu, &device_layer_count, device_layers);
     assert(!err);
 
     if (demo->validate) {
         validation_found = demo_check_layers(ARRAY_SIZE(device_validation_layers), device_validation_layers,
                                              device_layer_count, device_layers);
         if (!validation_found) {
-            ERR_EXIT("vkGetPhysicalDeviceLayerProperties failed to find"
+            ERR_EXIT("vkEnumerateDeviceLayerProperties failed to find"
                      "a required validation layer.\n\n"
                      "Please look at the Getting Started guide for additional "
                      "information.\n",
@@ -1883,7 +1883,7 @@
 
     uint32_t device_extension_count = 0;
     VkExtensionProperties *device_extensions = NULL;
-    err = vkGetPhysicalDeviceExtensionProperties(
+    err = vkEnumerateDeviceExtensionProperties(
               demo->gpu, NULL, &device_extension_count, NULL);
     assert(!err);
 
@@ -1891,7 +1891,7 @@
     enabled_extension_count = 0;
     memset(extension_names, 0, sizeof(extension_names));
     device_extensions = malloc(sizeof(VkExtensionProperties) * device_extension_count);
-    err = vkGetPhysicalDeviceExtensionProperties(
+    err = vkEnumerateDeviceExtensionProperties(
               demo->gpu, NULL, &device_extension_count, device_extensions);
     assert(!err);
 
@@ -1903,7 +1903,7 @@
         assert(enabled_extension_count < 64);
     }
     if (!WSIextFound) {
-        ERR_EXIT("vkGetPhysicalDeviceExtensionProperties failed to find the "
+        ERR_EXIT("vkEnumerateDeviceExtensionProperties failed to find the "
                  "\"VK_EXT_KHR_device_swapchain\" extension.\n\nDo you have a compatible "
                  "Vulkan installable client driver (ICD) installed?\nPlease "
                  "look at the Getting Started guide for additional "
diff --git a/demos/vulkaninfo.c b/demos/vulkaninfo.c
index f560533..234dbba 100644
--- a/demos/vulkaninfo.c
+++ b/demos/vulkaninfo.c
@@ -376,14 +376,14 @@
 
     /* repeat get until VK_INCOMPLETE goes away */
     do {
-        err = vkGetPhysicalDeviceExtensionProperties(gpu->obj, layer_name, &ext_count, NULL);
+        err = vkEnumerateDeviceExtensionProperties(gpu->obj, layer_name, &ext_count, NULL);
         assert(!err);
 
         if (ext_ptr) {
             free(ext_ptr);
         }
         ext_ptr = malloc(ext_count * sizeof(VkExtensionProperties));
-        err = vkGetPhysicalDeviceExtensionProperties(gpu->obj, layer_name, &ext_count, ext_ptr);
+        err = vkEnumerateDeviceExtensionProperties(gpu->obj, layer_name, &ext_count, ext_ptr);
     } while (err == VK_INCOMPLETE);
     assert(!err);
 
@@ -416,7 +416,7 @@
     struct layer_extension_list *device_layers = NULL;
 
     do {
-        err = vkGetPhysicalDeviceLayerProperties(gpu->obj, &count, NULL);
+        err = vkEnumerateDeviceLayerProperties(gpu->obj, &count, NULL);
         assert(!err);
 
         if (device_layer_properties) {
@@ -431,7 +431,7 @@
         device_layers = malloc(sizeof(struct layer_extension_list) * count);
         assert(device_layers);
 
-        err = vkGetPhysicalDeviceLayerProperties(gpu->obj, &count, device_layer_properties);
+        err = vkEnumerateDeviceLayerProperties(gpu->obj, &count, device_layer_properties);
     } while (err == VK_INCOMPLETE);
     assert(!err);
 
@@ -510,14 +510,14 @@
 
     /* repeat get until VK_INCOMPLETE goes away */
     do {
-        err = vkGetGlobalExtensionProperties(layer_name, &ext_count, NULL);
+        err = vkEnumerateInstanceExtensionProperties(layer_name, &ext_count, NULL);
         assert(!err);
 
         if (ext_ptr) {
             free(ext_ptr);
         }
         ext_ptr = malloc(ext_count * sizeof(VkExtensionProperties));
-        err = vkGetGlobalExtensionProperties(layer_name, &ext_count, ext_ptr);
+        err = vkEnumerateInstanceExtensionProperties(layer_name, &ext_count, ext_ptr);
     } while (err == VK_INCOMPLETE);
     assert(!err);
 
@@ -560,7 +560,7 @@
     struct layer_extension_list *global_layers = NULL;
 
     do {
-        err = vkGetGlobalLayerProperties(&count, NULL);
+        err = vkEnumerateInstanceLayerProperties(&count, NULL);
         assert(!err);
 
         if (global_layer_properties) {
@@ -575,7 +575,7 @@
         global_layers = malloc(sizeof(struct layer_extension_list) * count);
         assert(global_layers);
 
-        err = vkGetGlobalLayerProperties(&count, global_layer_properties);
+        err = vkEnumerateInstanceLayerProperties(&count, global_layer_properties);
     } while (err == VK_INCOMPLETE);
     assert(!err);
 
diff --git a/icd/intel/gpu.c b/icd/intel/gpu.c
index 495c16b..a7a1a05 100644
--- a/icd/intel/gpu.c
+++ b/icd/intel/gpu.c
@@ -506,7 +506,7 @@
     memset(pProps, 0, sizeof(*pProps));
 }
 
-ICD_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+ICD_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice                            physicalDevice,
         const char*                                 pLayerName,
         uint32_t*                                   pCount,
@@ -530,7 +530,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+ICD_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
diff --git a/icd/intel/instance.c b/icd/intel/instance.c
index 8971c02..83f9567 100644
--- a/icd/intel/instance.c
+++ b/icd/intel/instance.c
@@ -230,7 +230,7 @@
     intel_instance_destroy(instance);
 }
 
-ICD_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+ICD_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
         const char*                                 pLayerName,
         uint32_t*                                   pCount,
         VkExtensionProperties*                      pProperties)
@@ -252,7 +252,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+ICD_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
 {
diff --git a/icd/nulldrv/VK_nulldrv.def b/icd/nulldrv/VK_nulldrv.def
index cae2478..3eff731 100644
--- a/icd/nulldrv/VK_nulldrv.def
+++ b/icd/nulldrv/VK_nulldrv.def
@@ -29,7 +29,7 @@
    vkCreateInstance
    vkDestroyInstance
    vkEnumeratePhysicalDevices
-   vkGetGlobalExtensionProperties
+   vkEnumerateInstanceExtensionProperties
    xcbCreateWindow
    xcbDestroyWindow
    xcbGetMessage
diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c
index f90cd53..2f47137 100644
--- a/icd/nulldrv/nulldrv.c
+++ b/icd/nulldrv/nulldrv.c
@@ -1549,7 +1549,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+ICD_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
@@ -1558,7 +1558,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+ICD_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
     const char*                                 pLayerName,
     uint32_t*                                   pCount,
     VkExtensionProperties*                      pProperties)
@@ -1578,7 +1578,7 @@
     }
     return VK_SUCCESS;
 }
-ICD_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+ICD_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
 {
@@ -1586,7 +1586,7 @@
     return VK_SUCCESS;
 }
 
-VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VkResult VKAPI vkEnumerateDeviceExtensionProperties(
     VkPhysicalDevice                            physicalDevice,
     const char*                                 pLayerName,
     uint32_t*                                   pCount,
diff --git a/include/vk_layer.h b/include/vk_layer.h
index b544ffe..9cbce5f 100644
--- a/include/vk_layer.h
+++ b/include/vk_layer.h
@@ -190,8 +190,8 @@
     PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
     PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties;
     PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
-    PFN_vkGetPhysicalDeviceExtensionProperties GetPhysicalDeviceExtensionProperties;
-    PFN_vkGetPhysicalDeviceLayerProperties GetPhysicalDeviceLayerProperties;
+    PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
+    PFN_vkEnumerateDeviceLayerProperties EnumerateDeviceLayerProperties;
     PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
     PFN_vkDbgCreateMsgCallback DbgCreateMsgCallback;
     PFN_vkDbgDestroyMsgCallback DbgDestroyMsgCallback;
diff --git a/include/vulkan.h b/include/vulkan.h
index d865ded..1df07a0 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -2108,10 +2108,10 @@
 typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
 typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
 typedef void (VKAPI *PFN_vkDestroyDevice)(VkDevice device);
-typedef VkResult (VKAPI *PFN_vkGetGlobalExtensionProperties)(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
-typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
-typedef VkResult (VKAPI *PFN_vkGetGlobalLayerProperties)(uint32_t* pCount, VkLayerProperties* pProperties);
-typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
+typedef VkResult (VKAPI *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
+typedef VkResult (VKAPI *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
+typedef VkResult (VKAPI *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pCount, VkLayerProperties* pProperties);
+typedef VkResult (VKAPI *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
 typedef VkResult (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
 typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
 typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
@@ -2310,22 +2310,22 @@
 void VKAPI vkDestroyDevice(
     VkDevice                                    device);
 
-VkResult VKAPI vkGetGlobalExtensionProperties(
+VkResult VKAPI vkEnumerateInstanceExtensionProperties(
     const char*                                 pLayerName,
     uint32_t*                                   pCount,
     VkExtensionProperties*                      pProperties);
 
-VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VkResult VKAPI vkEnumerateDeviceExtensionProperties(
     VkPhysicalDevice                            physicalDevice,
     const char*                                 pLayerName,
     uint32_t*                                   pCount,
     VkExtensionProperties*                      pProperties);
 
-VkResult VKAPI vkGetGlobalLayerProperties(
+VkResult VKAPI vkEnumerateInstanceLayerProperties(
     uint32_t*                                   pCount,
     VkLayerProperties*                          pProperties);
 
-VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+VkResult VKAPI vkEnumerateDeviceLayerProperties(
     VkPhysicalDevice                            physicalDevice,
     uint32_t*                                   pCount,
     VkLayerProperties*                          pProperties);
diff --git a/layers/README.md b/layers/README.md
index 8a1754c..2dabf4a 100644
--- a/layers/README.md
+++ b/layers/README.md
@@ -6,7 +6,7 @@
 debug and validation purposes.  One or more VK entry points can be defined in your Layer
 library.  Undefined entrypoints in the Layer library will be passed to the next Layer which
 may be the driver.  Multiple layer libraries can be chained (actually a hierarchy) together.
-vkGetGlobalLayerProperties and vkGetPhysicalDeviceLayerProperties can be called to list the
+vkEnumerateInstanceLayerProperties and vkEnumerateDeviceLayerProperties can be called to list the
 available layers and their properties. Layers can intercept Vulkan instance level entry points
 in which case they are called an Instance Layer.  Layers can intercept device entry  points
 in which case they are called a Device Layer. Instance level entry points are those with VkInstance
diff --git a/layers/basic.cpp b/layers/basic.cpp
index 822646f..6a26542 100644
--- a/layers/basic.cpp
+++ b/layers/basic.cpp
@@ -60,7 +60,7 @@
 };
 
 /* Must use Vulkan name so that loader finds it */
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
@@ -77,7 +77,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice        physicalDevice,
         const char             *pLayerName,
         uint32_t               *pCount,
@@ -166,10 +166,10 @@
         return (PFN_vkVoidFunction) vkGetInstanceProcAddr;
     }
 
-    if (!strcmp("vkGetPhysicalDeviceLayerProperties", pName))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceLayerProperties;
-    if (!strcmp("vkGetPhysicalDeviceExtensionProperties", pName))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceExtensionProperties;
+    if (!strcmp("vkEnumerateDeviceLayerProperties", pName))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceLayerProperties;
+    if (!strcmp("vkEnumerateDeviceExtensionProperties", pName))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceExtensionProperties;
     if (!strcmp("vkGetPhysicalDeviceFormatProperties", pName))
         return (PFN_vkVoidFunction) basic_GetPhysicalDeviceFormatProperties;
     if (!strcmp("vkDestroyInstance", pName))
@@ -182,12 +182,12 @@
     return instance_dispatch_table(instance)->GetInstanceProcAddr(instance, pName);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(const char *pLayerName, uint32_t *pCount,  VkExtensionProperties* pProperties)
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(const char *pLayerName, uint32_t *pCount,  VkExtensionProperties* pProperties)
 {
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(uint32_t *pCount,  VkLayerProperties* pProperties)
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(uint32_t *pCount,  VkLayerProperties* pProperties)
 {
     return util_GetLayerProperties(ARRAY_SIZE(globalLayerProps), globalLayerProps, pCount, pProperties);
 }
diff --git a/layers/device_limits.cpp b/layers/device_limits.cpp
index 9489eb6..e242f8c 100644
--- a/layers/device_limits.cpp
+++ b/layers/device_limits.cpp
@@ -343,7 +343,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
         const char *pLayerName,
         uint32_t *pCount,
         VkExtensionProperties* pProperties)
@@ -352,7 +352,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
         uint32_t *pCount,
         VkLayerProperties*    pProperties)
 {
@@ -377,7 +377,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice                            physicalDevice,
         const char*                                 pLayerName,
         uint32_t*                                   pCount,
@@ -388,7 +388,7 @@
                                        pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
@@ -685,16 +685,16 @@
         return (PFN_vkVoidFunction) vkGetPhysicalDeviceQueueFamilyProperties;
     if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties"))
         return (PFN_vkVoidFunction) vkGetPhysicalDeviceMemoryProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceLayerProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceExtensionProperties;
     if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties"))
         return (PFN_vkVoidFunction) vkGetPhysicalDeviceSparseImageFormatProperties;
-    if (!strcmp(funcName, "vkGetGlobalLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalLayerProperties;
-    if (!strcmp(funcName, "vkGetGlobalExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceExtensionProperties;
 
     layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
     fptr = debug_report_get_instance_proc_addr(my_data->report_data, funcName);
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index d7df922..a831869 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -1435,7 +1435,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
         const char *pLayerName,
         uint32_t *pCount,
         VkExtensionProperties* pProperties)
@@ -1444,7 +1444,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
         uint32_t *pCount,
         VkLayerProperties*    pProperties)
 {
@@ -1469,7 +1469,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice                            physicalDevice,
         const char*                                 pLayerName,
         uint32_t*                                   pCount,
@@ -1480,7 +1480,7 @@
                                        pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
@@ -3420,14 +3420,14 @@
         return (PFN_vkVoidFunction) vkCreateInstance;
     if (!strcmp(funcName, "vkDestroyInstance"))
         return (PFN_vkVoidFunction) vkDestroyInstance;
-    if (!strcmp(funcName, "vkGetGlobalLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalLayerProperties;
-    if (!strcmp(funcName, "vkGetGlobalExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalExtensionProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceLayerProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceExtensionProperties;
 
     layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
     fptr = debug_report_get_instance_proc_addr(my_data->report_data, funcName);
diff --git a/layers/image.cpp b/layers/image.cpp
index f41a0e0..5229732 100644
--- a/layers/image.cpp
+++ b/layers/image.cpp
@@ -196,7 +196,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
         const char *pLayerName,
         uint32_t *pCount,
         VkExtensionProperties* pProperties)
@@ -205,7 +205,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
         uint32_t *pCount,
         VkLayerProperties*    pProperties)
 {
@@ -214,7 +214,7 @@
                                    pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice                            physicalDevice,
         const char*                                 pLayerName,
         uint32_t*                                   pCount,
@@ -224,7 +224,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
@@ -407,14 +407,14 @@
         return (PFN_vkVoidFunction) vkCreateInstance;
     if (!strcmp(funcName, "vkDestroyInstance"))
         return (PFN_vkVoidFunction) vkDestroyInstance;
-    if (!strcmp(funcName, "vkGetGlobalLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalLayerProperties;
-    if (!strcmp(funcName, "vkGetGlobalExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalExtensionProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceLayerProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceExtensionProperties;
 
     layer_data *data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
     PFN_vkVoidFunction fptr = debug_report_get_instance_proc_addr(data->report_data, funcName);
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index f60754b..0b2d7a6 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -1463,7 +1463,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
         const char *pLayerName,
         uint32_t *pCount,
         VkExtensionProperties* pProperties)
@@ -1472,7 +1472,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
         uint32_t *pCount,
         VkLayerProperties*    pProperties)
 {
@@ -1481,7 +1481,7 @@
                                    pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice                            physicalDevice,
         const char*                                 pLayerName,
         uint32_t*                                   pCount,
@@ -1491,7 +1491,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
@@ -3319,14 +3319,14 @@
         return (PFN_vkVoidFunction) vkCreateInstance;
     if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties"))
         return (PFN_vkVoidFunction) vkGetPhysicalDeviceMemoryProperties;
-    if (!strcmp(funcName, "vkGetGlobalLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalLayerProperties;
-    if (!strcmp(funcName, "vkGetGlobalExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalExtensionProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceLayerProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceExtensionProperties;
 
     layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
     fptr = debug_report_get_instance_proc_addr(my_data->report_data, funcName);
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 9fcf119..7404119 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -135,7 +135,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
         const char *pLayerName,
         uint32_t *pCount,
         VkExtensionProperties* pProperties)
@@ -144,7 +144,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
         uint32_t *pCount,
         VkLayerProperties*    pProperties)
 {
@@ -153,7 +153,7 @@
                                    pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice                            physicalDevice,
         const char*                                 pLayerName,
         uint32_t*                                   pCount,
@@ -163,7 +163,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
@@ -7509,14 +7509,14 @@
         return (PFN_vkVoidFunction) vkGetPhysicalDeviceFeatures;
     if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties"))
         return (PFN_vkVoidFunction) vkGetPhysicalDeviceFormatProperties;
-    if (!strcmp(funcName, "vkGetGlobalLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalLayerProperties;
-    if (!strcmp(funcName, "vkGetGlobalExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetGlobalExtensionProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceLayerProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceLayerProperties;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceExtensionProperties"))
-        return (PFN_vkVoidFunction) vkGetPhysicalDeviceExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateInstanceExtensionProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceLayerProperties;
+    if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties"))
+        return (PFN_vkVoidFunction) vkEnumerateDeviceExtensionProperties;
 
     layer_data *data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
     PFN_vkVoidFunction fptr = debug_report_get_instance_proc_addr(data->report_data, funcName);
diff --git a/layers/screenshot.cpp b/layers/screenshot.cpp
index bc2b820..70b10c1 100644
--- a/layers/screenshot.cpp
+++ b/layers/screenshot.cpp
@@ -387,7 +387,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
         const char *pLayerName,
         uint32_t *pCount,
         VkExtensionProperties* pProperties)
@@ -396,7 +396,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
         uint32_t *pCount,
         VkLayerProperties*    pProperties)
 {
@@ -405,7 +405,7 @@
                                    pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice                            physicalDevice,
         const char*                                 pLayerName,
         uint32_t*                                   pCount,
@@ -415,7 +415,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp
index fbaf0a4..632947a 100644
--- a/layers/shader_checker.cpp
+++ b/layers/shader_checker.cpp
@@ -240,7 +240,7 @@
     }
 };
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
         const char *pLayerName,
         uint32_t *pCount,
         VkExtensionProperties* pProperties)
@@ -249,7 +249,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
         uint32_t *pCount,
         VkLayerProperties*    pProperties)
 {
@@ -258,7 +258,7 @@
                                    pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice                            physicalDevice,
         const char*                                 pLayerName,
         uint32_t*                                   pCount,
@@ -268,7 +268,7 @@
     return util_GetExtensionProperties(0, NULL, pCount, pProperties);
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pCount,
         VkLayerProperties*                          pProperties)
@@ -1117,10 +1117,10 @@
 
     ADD_HOOK(vkCreateInstance);
     ADD_HOOK(vkDestroyInstance);
-    ADD_HOOK(vkGetGlobalExtensionProperties);
-    ADD_HOOK(vkGetPhysicalDeviceExtensionProperties);
-    ADD_HOOK(vkGetGlobalLayerProperties);
-    ADD_HOOK(vkGetPhysicalDeviceLayerProperties);
+    ADD_HOOK(vkEnumerateInstanceExtensionProperties);
+    ADD_HOOK(vkEnumerateDeviceExtensionProperties);
+    ADD_HOOK(vkEnumerateInstanceLayerProperties);
+    ADD_HOOK(vkEnumerateDeviceLayerProperties);
 #undef ADD_HOOK
 
 
diff --git a/loader/README.md b/loader/README.md
index 5878685..b8840d2 100644
--- a/loader/README.md
+++ b/loader/README.md
@@ -25,7 +25,7 @@
 
 ## Interface to driver (ICD)
 - vkCreateInstance exported
-- vkGetGlobalExtensionProperties exported
+- vkEnumerateInstanceExtensionProperties exported
 - vkGetDeviceProcAddr exported and returns valid function pointers for all the VK API entrypoints
 - vkGetInstanceProcAddr exported and returns valid function pointers for all the VK API entrypoints
 - all objects created by ICD can be cast to (VK\_LAYER\_DISPATCH\_TABLE \*\*)
diff --git a/loader/gpa_helper.h b/loader/gpa_helper.h
index fe6449a..1581d81 100644
--- a/loader/gpa_helper.h
+++ b/loader/gpa_helper.h
@@ -57,14 +57,14 @@
         return (void*) vkCreateDevice;
     if (!strcmp(name, "DestroyDevice"))
         return (void*) vkDestroyDevice;
-    if (!strcmp(name, "GetGlobalExtensionProperties"))
-        return (void*) vkGetGlobalExtensionProperties;
-    if (!strcmp(name, "GetPhysicalDeviceExtensionProperties"))
-        return (void*) vkGetPhysicalDeviceExtensionProperties;
-    if (!strcmp(name, "GetGlobalLayerProperties"))
-        return (void*) vkGetGlobalLayerProperties;
-    if (!strcmp(name, "GetPhysicalDeviceLayerProperties"))
-        return (void*) vkGetPhysicalDeviceLayerProperties;
+    if (!strcmp(name, "EnumerateInstanceExtensionProperties"))
+        return (void*) vkEnumerateInstanceExtensionProperties;
+    if (!strcmp(name, "EnumerateDeviceExtensionProperties"))
+        return (void*) vkEnumerateDeviceExtensionProperties;
+    if (!strcmp(name, "EnumerateInstanceLayerProperties"))
+        return (void*) vkEnumerateInstanceLayerProperties;
+    if (!strcmp(name, "EnumerateDeviceLayerProperties"))
+        return (void*) vkEnumerateDeviceLayerProperties;
     if (!strcmp(name, "GetDeviceQueue"))
         return (void*) vkGetDeviceQueue;
     if (!strcmp(name, "QueueSubmit"))
@@ -378,10 +378,10 @@
         return (void*) vkGetDeviceProcAddr;
     if (!strcmp(name, "CreateDevice"))
         return (void*) vkCreateDevice;
-    if (!strcmp(name, "GetPhysicalDeviceExtensionProperties"))
-        return (void*) vkGetPhysicalDeviceExtensionProperties;
-    if (!strcmp(name, "GetPhysicalDeviceLayerProperties"))
-        return (void*) vkGetPhysicalDeviceLayerProperties;
+    if (!strcmp(name, "EnumerateDeviceExtensionProperties"))
+        return (void*) vkEnumerateDeviceExtensionProperties;
+    if (!strcmp(name, "EnumerateDeviceLayerProperties"))
+        return (void*) vkEnumerateDeviceLayerProperties;
     if (!strcmp(name, "GetDeviceQueue"))
         return (void*) vkGetDeviceQueue;
     if (!strcmp(name, "CreateCommandBuffer"))
diff --git a/loader/loader.c b/loader/loader.c
index 09de9ee..29f8e95 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -98,8 +98,8 @@
     .GetPhysicalDeviceProperties = loader_GetPhysicalDeviceProperties,
     .GetPhysicalDeviceQueueFamilyProperties = loader_GetPhysicalDeviceQueueFamilyProperties,
     .GetPhysicalDeviceMemoryProperties = loader_GetPhysicalDeviceMemoryProperties,
-    .GetPhysicalDeviceExtensionProperties = loader_GetPhysicalDeviceExtensionProperties,
-    .GetPhysicalDeviceLayerProperties = loader_GetPhysicalDeviceLayerProperties,
+    .EnumerateDeviceExtensionProperties = loader_EnumerateDeviceExtensionProperties,
+    .EnumerateDeviceLayerProperties = loader_EnumerateDeviceLayerProperties,
     .GetPhysicalDeviceSparseImageFormatProperties = loader_GetPhysicalDeviceSparseImageFormatProperties,
     .GetPhysicalDeviceSurfaceSupportKHR = loader_GetPhysicalDeviceSurfaceSupportKHR,
     .DbgCreateMsgCallback = loader_DbgCreateMsgCallback,
@@ -447,7 +447,7 @@
 
 static void loader_add_global_extensions(
         const struct loader_instance *inst,
-        const PFN_vkGetGlobalExtensionProperties fp_get_props,
+        const PFN_vkEnumerateInstanceExtensionProperties fp_get_props,
         const char *lib_name,
         struct loader_extension_list *ext_list)
 {
@@ -456,7 +456,7 @@
     VkResult res;
 
     if (!fp_get_props) {
-        /* No GetGlobalExtensionProperties defined */
+        /* No EnumerateInstanceExtensionProperties defined */
         return;
     }
 
@@ -497,7 +497,7 @@
 
 static void loader_add_physical_device_extensions(
         const struct loader_instance *inst,
-        PFN_vkGetPhysicalDeviceExtensionProperties get_phys_dev_ext_props,
+        PFN_vkEnumerateDeviceExtensionProperties get_phys_dev_ext_props,
         VkPhysicalDevice physical_device,
         const char *lib_name,
         struct loader_extension_list *ext_list)
@@ -507,7 +507,7 @@
     VkExtensionProperties *ext_props;
 
     if (!get_phys_dev_ext_props) {
-        /* No GetPhysicalDeviceExtensionProperties defined */
+        /* No EnumerateDeviceExtensionProperties defined */
         return;
     }
 
@@ -870,7 +870,7 @@
     // traverse scanned icd list adding non-duplicate extensions to the list
     for (uint32_t i = 0; i < icd_libs->count; i++) {
         loader_init_ext_list(inst, &icd_exts);
-        loader_add_global_extensions(inst, icd_libs->list[i].GetGlobalExtensionProperties,
+        loader_add_global_extensions(inst, icd_libs->list[i].EnumerateInstanceExtensionProperties,
                                      icd_libs->list[i].lib_name,
                                      &icd_exts);
         loader_add_to_ext_list(inst, inst_exts,
@@ -1037,7 +1037,7 @@
 {
     loader_platform_dl_handle handle;
     PFN_vkCreateInstance fp_create_inst;
-    PFN_vkGetGlobalExtensionProperties fp_get_global_ext_props;
+    PFN_vkEnumerateInstanceExtensionProperties fp_get_global_ext_props;
     PFN_vkGetInstanceProcAddr fp_get_proc_addr;
     struct loader_scanned_icds *new_node;
 
@@ -1060,7 +1060,7 @@
 
     LOOKUP_LD(fp_get_proc_addr, GetInstanceProcAddr);
     LOOKUP_LD(fp_create_inst, CreateInstance);
-    LOOKUP_LD(fp_get_global_ext_props, GetGlobalExtensionProperties);
+    LOOKUP_LD(fp_get_global_ext_props, EnumerateInstanceExtensionProperties);
 
 #undef LOOKUP_LD
 
@@ -1080,7 +1080,7 @@
     new_node->handle = handle;
     new_node->GetInstanceProcAddr = fp_get_proc_addr;
     new_node->CreateInstance = fp_create_inst;
-    new_node->GetGlobalExtensionProperties = fp_get_global_ext_props;
+    new_node->EnumerateInstanceExtensionProperties = fp_get_global_ext_props;
 
     new_node->lib_name = (char *) loader_heap_alloc(inst,
                                             strlen(filename) + 1,
@@ -1118,7 +1118,7 @@
     LOOKUP_GIPA(GetPhysicalDeviceProperties, true);
     LOOKUP_GIPA(GetPhysicalDeviceMemoryProperties, true);
     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyProperties, true);
-    LOOKUP_GIPA(GetPhysicalDeviceExtensionProperties, true);
+    LOOKUP_GIPA(EnumerateDeviceExtensionProperties, true);
     LOOKUP_GIPA(GetPhysicalDeviceSparseImageFormatProperties, true);
     LOOKUP_GIPA(DbgCreateMsgCallback, false);
     LOOKUP_GIPA(DbgDestroyMsgCallback, false);
@@ -2742,7 +2742,7 @@
 
                     loader_add_physical_device_extensions(
                                 ptr_instance,
-                                icd->GetPhysicalDeviceExtensionProperties,
+                                icd->EnumerateDeviceExtensionProperties,
                                 icd->gpus[0],
                                 icd->this_icd_lib->lib_name,
                                 &icd->device_extension_cache[i]);
@@ -3081,7 +3081,7 @@
     return loader_GetDeviceProcAddr(device, pName);
 }
 
-LOADER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
+LOADER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(
     const char*                                 pLayerName,
     uint32_t*                                   pCount,
     VkExtensionProperties*                      pProperties)
@@ -3149,7 +3149,7 @@
     return VK_SUCCESS;
 }
 
-LOADER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(
+LOADER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(
     uint32_t*                                   pCount,
     VkLayerProperties*                          pProperties)
 {
@@ -3190,7 +3190,7 @@
     return VK_SUCCESS;
 }
 
-VkResult VKAPI loader_GetPhysicalDeviceExtensionProperties(
+VkResult VKAPI loader_EnumerateDeviceExtensionProperties(
         VkPhysicalDevice                        gpu,
         const char*                             pLayerName,
         uint32_t*                               pCount,
@@ -3237,7 +3237,7 @@
     return VK_SUCCESS;
 }
 
-VkResult VKAPI loader_GetPhysicalDeviceLayerProperties(
+VkResult VKAPI loader_EnumerateDeviceLayerProperties(
         VkPhysicalDevice                        gpu,
         uint32_t*                               pCount,
         VkLayerProperties*                      pProperties)
diff --git a/loader/loader.h b/loader/loader.h
index 19711d9..e344fc2 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -139,7 +139,7 @@
     PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
     PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties;
     PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
-    PFN_vkGetPhysicalDeviceExtensionProperties GetPhysicalDeviceExtensionProperties;
+    PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
     PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
     PFN_vkDbgCreateMsgCallback DbgCreateMsgCallback;
     PFN_vkDbgDestroyMsgCallback DbgDestroyMsgCallback;
@@ -148,7 +148,7 @@
     /*
      * Fill in the cache of available device extensions from
      * this physical device. This cache will be used to satisfy
-     * calls to GetPhysicalDeviceExtensionProperties
+     * calls to EnumerateDeviceExtensionProperties
      */
     struct loader_extension_list device_extension_cache[MAX_GPUS_PER_ICD];
     struct loader_icd *next;
@@ -207,7 +207,7 @@
 
     PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
     PFN_vkCreateInstance CreateInstance;
-    PFN_vkGetGlobalExtensionProperties GetGlobalExtensionProperties;
+    PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties;
 };
 
 static inline struct loader_instance *loader_instance(VkInstance instance) {
@@ -309,11 +309,11 @@
         VkPhysicalDevice physicalDevice,
         VkPhysicalDeviceProperties* pProperties);
 
-VkResult VKAPI loader_GetPhysicalDeviceExtensionProperties (VkPhysicalDevice physicalDevice,
+VkResult VKAPI loader_EnumerateDeviceExtensionProperties (VkPhysicalDevice physicalDevice,
         const char *pLayerName, uint32_t *pCount,
         VkExtensionProperties* pProperties);
 
-VkResult VKAPI loader_GetPhysicalDeviceLayerProperties (VkPhysicalDevice physicalDevice,
+VkResult VKAPI loader_EnumerateDeviceLayerProperties (VkPhysicalDevice physicalDevice,
         uint32_t *pCount,
         VkLayerProperties* pProperties);
 
diff --git a/loader/table_ops.h b/loader/table_ops.h
index 8c3920e..c27cd4a 100644
--- a/loader/table_ops.h
+++ b/loader/table_ops.h
@@ -497,8 +497,8 @@
     table->GetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties) gpa(inst, "vkGetPhysicalDeviceProperties");
     table->GetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties) gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties");
     table->GetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties) gpa(inst, "vkGetPhysicalDeviceMemoryProperties");
-    table->GetPhysicalDeviceExtensionProperties = (PFN_vkGetPhysicalDeviceExtensionProperties) gpa(inst, "vkGetPhysicalDeviceExtensionProperties");
-    table->GetPhysicalDeviceLayerProperties = (PFN_vkGetPhysicalDeviceLayerProperties) gpa(inst, "vkGetPhysicalDeviceLayerProperties");
+    table->EnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties) gpa(inst, "vkEnumerateDeviceExtensionProperties");
+    table->EnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties) gpa(inst, "vkEnumerateDeviceLayerProperties");
 }
 
 static inline void loader_init_instance_extension_dispatch_table(
@@ -541,10 +541,10 @@
         return (void *) table->GetPhysicalDeviceMemoryProperties;
     if (!strcmp(name, "GetInstanceProcAddr"))
         return (void *) table->GetInstanceProcAddr;
-    if (!strcmp(name, "GetPhysicalDeviceExtensionProperties"))
-        return (void *) table->GetPhysicalDeviceExtensionProperties;
-    if (!strcmp(name, "GetPhysicalDeviceLayerProperties"))
-        return (void *) table->GetPhysicalDeviceLayerProperties;
+    if (!strcmp(name, "EnumerateDeviceExtensionProperties"))
+        return (void *) table->EnumerateDeviceExtensionProperties;
+    if (!strcmp(name, "EnumerateDeviceLayerProperties"))
+        return (void *) table->EnumerateDeviceLayerProperties;
     if (!strcmp(name, "GetPhysicalDeviceSurfaceSupportKHR"))
         return (void *) table->GetPhysicalDeviceSurfaceSupportKHR;
     if (!strcmp(name, "DbgCreateMsgCallback"))
diff --git a/loader/trampoline.c b/loader/trampoline.c
index 7ebdfe4..b1a8390 100644
--- a/loader/trampoline.c
+++ b/loader/trampoline.c
@@ -313,7 +313,7 @@
     loader_platform_thread_unlock_mutex(&loader_lock);
 }
 
-LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
+LOADER_EXPORT VkResult VKAPI vkEnumerateDeviceExtensionProperties(
     VkPhysicalDevice                            physicalDevice,
     const char*                                 pLayerName,
     uint32_t*                                   pCount,
@@ -323,12 +323,12 @@
 
     loader_platform_thread_lock_mutex(&loader_lock);
     //TODO convert over to using instance chain dispatch
-    res = loader_GetPhysicalDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
+    res = loader_EnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
     loader_platform_thread_unlock_mutex(&loader_lock);
     return res;
 }
 
-LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
+LOADER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(
     VkPhysicalDevice                            physicalDevice,
     uint32_t*                                   pCount,
     VkLayerProperties*                          pProperties)
@@ -337,7 +337,7 @@
 
     loader_platform_thread_lock_mutex(&loader_lock);
     //TODO convert over to using instance chain dispatch
-    res = loader_GetPhysicalDeviceLayerProperties(physicalDevice, pCount, pProperties);
+    res = loader_EnumerateDeviceLayerProperties(physicalDevice, pCount, pProperties);
     loader_platform_thread_unlock_mutex(&loader_lock);
     return res;
 }
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 0157cfb..5215bf3 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -132,11 +132,11 @@
 
     do {
         layer_count = 0;
-        err = vkGetGlobalLayerProperties(&layer_count, NULL);
+        err = vkEnumerateInstanceLayerProperties(&layer_count, NULL);
 
         if (err == VK_SUCCESS) {
             layers.reserve(layer_count);
-            err = vkGetGlobalLayerProperties(&layer_count, layers.data());
+            err = vkEnumerateInstanceLayerProperties(&layer_count, layers.data());
         }
     } while (err == VK_INCOMPLETE);
 
@@ -165,11 +165,11 @@
 
     do {
         ext_count = 0;
-        err = vkGetGlobalExtensionProperties(pLayerName, &ext_count, NULL);
+        err = vkEnumerateInstanceExtensionProperties(pLayerName, &ext_count, NULL);
 
         if (err == VK_SUCCESS) {
             exts.resize(ext_count);
-            err = vkGetGlobalExtensionProperties(pLayerName, &ext_count, exts.data());
+            err = vkEnumerateInstanceExtensionProperties(pLayerName, &ext_count, exts.data());
         }
     } while (err == VK_INCOMPLETE);
 
@@ -197,11 +197,11 @@
 
     do {
         uint32_t extCount = 0;
-        err = vkGetPhysicalDeviceExtensionProperties(handle(), pLayerName, &extCount, NULL);
+        err = vkEnumerateDeviceExtensionProperties(handle(), pLayerName, &extCount, NULL);
 
         if (err == VK_SUCCESS) {
             exts.resize(extCount);
-            err = vkGetPhysicalDeviceExtensionProperties(handle(), pLayerName, &extCount, exts.data());
+            err = vkEnumerateDeviceExtensionProperties(handle(), pLayerName, &extCount, exts.data());
         }
     } while (err == VK_INCOMPLETE);
 
@@ -239,11 +239,11 @@
 
     do {
         uint32_t layer_count = 0;
-        err = vkGetPhysicalDeviceLayerProperties(handle(), &layer_count, NULL);
+        err = vkEnumerateDeviceLayerProperties(handle(), &layer_count, NULL);
 
         if (err == VK_SUCCESS) {
             layer_props.reserve(layer_count);
-            err = vkGetPhysicalDeviceLayerProperties(handle(), &layer_count, layer_props.data());
+            err = vkEnumerateDeviceLayerProperties(handle(), &layer_count, layer_props.data());
         }
     } while (err == VK_INCOMPLETE);
 
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index a2db54e..b47f317 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -131,7 +131,7 @@
     VkResult set_memory_type(const uint32_t type_bits, VkMemoryAllocInfo *info, const VkMemoryPropertyFlags properties,
                              const VkMemoryPropertyFlags forbid = 0) const;
 
-    // vkGetPhysicalDeviceExtensionProperties()
+    // vkEnumerateDeviceExtensionProperties()
     std::vector<VkExtensionProperties> extensions() const;
     std::vector<VkExtensionProperties> extensions(const char * pLayerName) const;
 
diff --git a/vk-generate.py b/vk-generate.py
index c127ea2..2d235ef 100755
--- a/vk-generate.py
+++ b/vk-generate.py
@@ -122,7 +122,7 @@
             stmts.append("memset(table, 0, sizeof(*table));")
             stmts.append("table->GetDeviceProcAddr =(PFN_vkGetDeviceProcAddr)  gpa(device,\"vkGetDeviceProcAddr\");")
             for proto in self.protos:
-                if proto.name == "CreateInstance" or proto.name == "GetGlobalExtensionProperties" or proto.name == "GetGlobalLayerProperties" or proto.params[0].ty == "VkInstance" or (proto.params[0].ty == "VkPhysicalDevice" and proto.name != "CreateDevice"):
+                if proto.name == "CreateInstance" or proto.name == "EnumerateInstanceExtensionProperties" or proto.name == "EnumerateInstanceLayerProperties" or proto.params[0].ty == "VkInstance" or (proto.params[0].ty == "VkPhysicalDevice" and proto.name != "CreateDevice"):
                     continue
                 if proto.name != "GetDeviceProcAddr" and 'KHR' not in proto.name:
                     stmts.append("table->%s = (PFN_vk%s) gpa(baseDevice, \"vk%s\");" %
@@ -255,8 +255,8 @@
                 "layer": [
                     "vkGetInstanceProcAddr",
                     "vkGetDeviceProcAddr",
-                    "vkGetGlobalLayerProperties",
-                    "vkGetGlobalExtensionProperties"
+                    "vkEnumerateInstanceLayerProperties",
+                    "vkEnumerateInstanceExtensionProperties"
                 ],
                 "layerMulti": [
                     "multi2GetInstanceProcAddr",
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index 7fa0cde..93fca3a 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -35,7 +35,7 @@
 from collections import defaultdict
 
 def proto_is_global(proto):
-    if proto.params[0].ty == "VkInstance" or proto.params[0].ty == "VkPhysicalDevice" or proto.name == "CreateInstance" or proto.name == "GetGlobalLayerProperties" or proto.name == "GetGlobalExtensionProperties" or proto.name == "GetPhysicalDeviceLayerProperties" or proto.name == "GetPhysicalDeviceExtensionProperties":
+    if proto.params[0].ty == "VkInstance" or proto.params[0].ty == "VkPhysicalDevice" or proto.name == "CreateInstance" or proto.name == "EnumerateInstanceLayerProperties" or proto.name == "EnumerateInstanceExtensionProperties" or proto.name == "EnumerateDeviceLayerProperties" or proto.name == "EnumerateDeviceExtensionProperties":
        return True
     else:
        return False
@@ -208,7 +208,7 @@
         ggep_body.append('%s' % self.lineinfo.get())
 
         ggep_body.append('')
-        ggep_body.append('VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(const char *pLayerName, uint32_t *pCount,  VkExtensionProperties* pProperties)')
+        ggep_body.append('VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceExtensionProperties(const char *pLayerName, uint32_t *pCount,  VkExtensionProperties* pProperties)')
         ggep_body.append('{')
         ggep_body.append('    return util_GetExtensionProperties(0, NULL, pCount, pProperties);')
         ggep_body.append('}')
@@ -232,7 +232,7 @@
         ggep_body.append('')
         ggep_body.append('%s' % self.lineinfo.get())
         ggep_body.append('')
-        ggep_body.append('VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalLayerProperties(uint32_t *pCount,  VkLayerProperties* pProperties)')
+        ggep_body.append('VK_LAYER_EXPORT VkResult VKAPI vkEnumerateInstanceLayerProperties(uint32_t *pCount,  VkLayerProperties* pProperties)')
         ggep_body.append('{')
         ggep_body.append('    return util_GetLayerProperties(ARRAY_SIZE(globalLayerProps), globalLayerProps, pCount, pProperties);')
         ggep_body.append('}')
@@ -253,7 +253,7 @@
             gpdlp_body.append('        "layer: %s",' % layer)
             gpdlp_body.append('    }')
             gpdlp_body.append('};')
-        gpdlp_body.append('VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t *pCount, VkLayerProperties* pProperties)')
+        gpdlp_body.append('VK_LAYER_EXPORT VkResult VKAPI vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t *pCount, VkLayerProperties* pProperties)')
         gpdlp_body.append('{')
         gpdlp_body.append('    return util_GetLayerProperties(ARRAY_SIZE(deviceLayerProps), deviceLayerProps, pCount, pProperties);')
         gpdlp_body.append('}')
@@ -279,11 +279,11 @@
                         intercept = self._gen_layer_dbg_destroy_msg_callback()
                     elif 'CreateDevice' == proto.name:
                         funcs.append('/* CreateDevice HERE */')
-                    elif 'GetGlobalExtensionProperties' == proto.name:
+                    elif 'EnumerateInstanceExtensionProperties' == proto.name:
                         intercept = self._gen_layer_get_global_extension_props(self.layer_name)
-                    elif 'GetGlobalLayerProperties' == proto.name:
+                    elif 'EnumerateInstanceLayerProperties' == proto.name:
                         intercept = self._gen_layer_get_global_layer_props(self.layer_name)
-                    elif 'GetPhysicalDeviceLayerProperties' == proto.name:
+                    elif 'EnumerateDeviceLayerProperties' == proto.name:
                         intercept = self._gen_layer_get_physical_device_layer_props(self.layer_name)
 
                 if intercept is not None:
@@ -613,7 +613,7 @@
         return "\n".join(gen_header)
 
     def generate_intercept(self, proto, qual):
-        if proto.name in [ 'GetGlobalLayerProperties', 'GetGlobalExtensionProperties', 'GetPhysicalDeviceLayerProperties', 'GetPhysicalDeviceExtensionProperties' ]:
+        if proto.name in [ 'EnumerateInstanceLayerProperties', 'EnumerateInstanceExtensionProperties', 'EnumerateDeviceLayerProperties', 'EnumerateDeviceExtensionProperties' ]:
             # use default version
             return None
         decl = proto.c_func(prefix="vk", attr="VKAPI")
@@ -903,7 +903,7 @@
         return "\n".join(func_body)
 
     def generate_intercept(self, proto, qual):
-        if proto.name in [ 'GetGlobalLayerProperties','GetGlobalExtensionProperties','GetPhysicalDeviceLayerProperties','GetPhysicalDeviceExtensionProperties']:
+        if proto.name in [ 'EnumerateInstanceLayerProperties','EnumerateInstanceExtensionProperties','EnumerateDeviceLayerProperties','EnumerateDeviceExtensionProperties']:
             return None
         decl = proto.c_func(prefix="vk", attr="VKAPI")
         ret_val = ''
@@ -1450,7 +1450,7 @@
         return "\n".join(cbv_txt)
 
     def generate_intercept(self, proto, qual):
-        if proto.name in [ 'DbgCreateMsgCallback', 'GetGlobalLayerProperties', 'GetGlobalExtensionProperties','GetPhysicalDeviceLayerProperties', 'GetPhysicalDeviceExtensionProperties' ]:
+        if proto.name in [ 'DbgCreateMsgCallback', 'EnumerateInstanceLayerProperties', 'EnumerateInstanceExtensionProperties','EnumerateDeviceLayerProperties', 'EnumerateDeviceExtensionProperties' ]:
             # use default version
             return None
 
diff --git a/vktrace/src/vktrace_extensions/vktracevulkan/vkreplay/vkreplay_vkreplay.cpp b/vktrace/src/vktrace_extensions/vktracevulkan/vkreplay/vkreplay_vkreplay.cpp
index 5511a71..9edee10 100644
--- a/vktrace/src/vktrace_extensions/vktracevulkan/vkreplay/vkreplay_vkreplay.cpp
+++ b/vktrace/src/vktrace_extensions/vktracevulkan/vkreplay/vkreplay_vkreplay.cpp
@@ -316,10 +316,10 @@
                 uint32_t count;
 
                 // query to find if ScreenShot layer is available
-                m_vkFuncs.real_vkGetPhysicalDeviceLayerProperties(remappedPhysicalDevice, &count, NULL);
+                m_vkFuncs.real_vkEnumerateDeviceLayerProperties(remappedPhysicalDevice, &count, NULL);
                 VkLayerProperties *props = (VkLayerProperties *) vktrace_malloc(count * sizeof (VkLayerProperties));
                 if (props && count > 0)
-                    m_vkFuncs.real_vkGetPhysicalDeviceLayerProperties(remappedPhysicalDevice, &count, props);
+                    m_vkFuncs.real_vkEnumerateDeviceLayerProperties(remappedPhysicalDevice, &count, props);
                 for (uint32_t i = 0; i < count; i++) {
                     if (!strcmp(props[i].layerName, strScreenShot)) {
                         found_ss = true;
diff --git a/vktrace/src/vktrace_layer/vktrace_lib_trace.cpp b/vktrace/src/vktrace_layer/vktrace_lib_trace.cpp
index bfee849..2bd9b3d 100644
--- a/vktrace/src/vktrace_layer/vktrace_lib_trace.cpp
+++ b/vktrace/src/vktrace_layer/vktrace_lib_trace.cpp
@@ -351,10 +351,10 @@
         {
             // query to find if ScreenShot layer is available
             VkLayerInstanceDispatchTable *pTable = &mid(physicalDevice)->instTable;
-            pTable->GetPhysicalDeviceLayerProperties(physicalDevice, &count, NULL);
+            pTable->EnumerateDeviceLayerProperties(physicalDevice, &count, NULL);
             VkLayerProperties *props = (VkLayerProperties *) vktrace_malloc(count * sizeof (VkLayerProperties));
             if (props && count > 0)
-                pTable->GetPhysicalDeviceLayerProperties(physicalDevice, &count, props);
+                pTable->EnumerateDeviceLayerProperties(physicalDevice, &count, props);
             for (i = 0; i < count; i++) {
                 if (!strcmp(props[i].layerName, "ScreenShot"))
                 {
@@ -535,7 +535,7 @@
     return result;
 }
 
-VKTRACER_EXPORT VkResult VKAPI __HOOKED_vkGetPhysicalDeviceExtensionProperties(
+VKTRACER_EXPORT VkResult VKAPI __HOOKED_vkEnumerateDeviceExtensionProperties(
     VkPhysicalDevice physicalDevice,
     const char* pLayerName,
     uint32_t* pCount,
@@ -543,18 +543,18 @@
 {
     vktrace_trace_packet_header* pHeader;
     VkResult result;
-    packet_vkGetPhysicalDeviceExtensionProperties* pPacket = NULL;
+    packet_vkEnumerateDeviceExtensionProperties* pPacket = NULL;
     uint64_t startTime;
     uint64_t endTime;
     uint64_t vktraceStartTime = vktrace_get_time();
     startTime = vktrace_get_time();
-    result = mid(physicalDevice)->instTable.GetPhysicalDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
+    result = mid(physicalDevice)->instTable.EnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
     endTime = vktrace_get_time();
-    CREATE_TRACE_PACKET(vkGetPhysicalDeviceExtensionProperties, ((pLayerName != NULL) ? strlen(pLayerName) + 1 : 0) + sizeof(uint32_t) + (*pCount * sizeof(VkExtensionProperties)));
+    CREATE_TRACE_PACKET(vkEnumerateDeviceExtensionProperties, ((pLayerName != NULL) ? strlen(pLayerName) + 1 : 0) + sizeof(uint32_t) + (*pCount * sizeof(VkExtensionProperties)));
     pHeader->vktrace_begin_time = vktraceStartTime;
     pHeader->entrypoint_begin_time = startTime;
     pHeader->entrypoint_end_time = endTime;
-    pPacket = interpret_body_as_vkGetPhysicalDeviceExtensionProperties(pHeader);
+    pPacket = interpret_body_as_vkEnumerateDeviceExtensionProperties(pHeader);
     pPacket->physicalDevice = physicalDevice;
     vktrace_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->pLayerName), ((pLayerName != NULL) ? strlen(pLayerName) + 1 : 0), pLayerName);
     vktrace_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->pCount), sizeof(uint32_t), pCount);
@@ -567,25 +567,25 @@
     return result;
 }
 
-VKTRACER_EXPORT VkResult VKAPI __HOOKED_vkGetPhysicalDeviceLayerProperties(
+VKTRACER_EXPORT VkResult VKAPI __HOOKED_vkEnumerateDeviceLayerProperties(
     VkPhysicalDevice physicalDevice,
     uint32_t* pCount,
     VkLayerProperties* pProperties)
 {
     vktrace_trace_packet_header* pHeader;
     VkResult result;
-    packet_vkGetPhysicalDeviceLayerProperties* pPacket = NULL;
+    packet_vkEnumerateDeviceLayerProperties* pPacket = NULL;
     uint64_t startTime;
     uint64_t endTime;
     uint64_t vktraceStartTime = vktrace_get_time();
     startTime = vktrace_get_time();
-    result = mid(physicalDevice)->instTable.GetPhysicalDeviceLayerProperties(physicalDevice, pCount, pProperties);
+    result = mid(physicalDevice)->instTable.EnumerateDeviceLayerProperties(physicalDevice, pCount, pProperties);
     endTime = vktrace_get_time();
-    CREATE_TRACE_PACKET(vkGetPhysicalDeviceLayerProperties, sizeof(uint32_t) + (*pCount * sizeof(VkLayerProperties)));
+    CREATE_TRACE_PACKET(vkEnumerateDeviceLayerProperties, sizeof(uint32_t) + (*pCount * sizeof(VkLayerProperties)));
     pHeader->vktrace_begin_time = vktraceStartTime;
     pHeader->entrypoint_begin_time = startTime;
     pHeader->entrypoint_end_time = endTime;
-    pPacket = interpret_body_as_vkGetPhysicalDeviceLayerProperties(pHeader);
+    pPacket = interpret_body_as_vkEnumerateDeviceLayerProperties(pHeader);
     pPacket->physicalDevice = physicalDevice;
     vktrace_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->pCount), sizeof(uint32_t), pCount);
     vktrace_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->pProperties), *pCount * sizeof(VkLayerProperties), pProperties);
@@ -1532,10 +1532,10 @@
         return (PFN_vkVoidFunction) __HOOKED_vkGetPhysicalDeviceQueueFamilyProperties;
     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties"))
         return (PFN_vkVoidFunction) __HOOKED_vkGetPhysicalDeviceMemoryProperties;
-    if (!strcmp(name, "GetPhysicalDeviceLayerProperties"))
-        return (PFN_vkVoidFunction) __HOOKED_vkGetPhysicalDeviceLayerProperties;
-    if (!strcmp(name, "GetPhysicalDeviceExtensionProperties"))
-        return (PFN_vkVoidFunction) __HOOKED_vkGetPhysicalDeviceExtensionProperties;
+    if (!strcmp(name, "EnumerateDeviceLayerProperties"))
+        return (PFN_vkVoidFunction) __HOOKED_vkEnumerateDeviceLayerProperties;
+    if (!strcmp(name, "EnumerateDeviceExtensionProperties"))
+        return (PFN_vkVoidFunction) __HOOKED_vkEnumerateDeviceExtensionProperties;
 
     return NULL;
 }
diff --git a/vktrace/vktrace_generate.py b/vktrace/vktrace_generate.py
index 150834f..7bb1fba 100755
--- a/vktrace/vktrace_generate.py
+++ b/vktrace/vktrace_generate.py
@@ -372,11 +372,11 @@
                                          'FreeDescriptorSets',
                                          'FlushMappedMemoryRanges',
                                          'GetDeviceProcAddr',
-                                         'GetGlobalExtensionProperties',
-                                         'GetGlobalLayerProperties',
                                          'GetInstanceProcAddr',
-                                         'GetPhysicalDeviceExtensionProperties',
-                                         'GetPhysicalDeviceLayerProperties',
+                                         'EnumerateInstanceExtensionProperties',
+                                         'EnumerateDeviceExtensionProperties',
+                                         'EnumerateInstanceLayerProperties',
+                                         'EnumerateDeviceLayerProperties',
                                          'GetPhysicalDeviceQueueFamilyProperties',
                                          'GetQueryPoolResults',
                                          'MapMemory',
@@ -1659,7 +1659,7 @@
                 rbody.append(rr_string)
 
                 # handle return values or anything that needs to happen after the real_*(..) call
-                get_ext_layers_proto = ['GetGlobalExtensionProperties', 'GetPhysicalDeviceExtensionProperties','GetGlobalLayerProperties', 'GetPhysicalDeviceLayerProperties']
+                get_ext_layers_proto = ['EnumerateInstanceExtensionProperties', 'EnumerateDeviceExtensionProperties','EnumerateInstanceLayerProperties', 'EnumerateDeviceLayerProperties']
                 if 'DestroyDevice' in proto.name:
                     rbody.append('            if (replayResult == VK_SUCCESS)')
                     rbody.append('            {')
diff --git a/vulkan.py b/vulkan.py
index 4f16ac0..5d8601d 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -276,22 +276,22 @@
             [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkPhysicalDeviceMemoryProperties*", "pMemoryProperties")]),
 
-        Proto("VkResult", "GetGlobalExtensionProperties",
+        Proto("VkResult", "EnumerateInstanceExtensionProperties",
             [Param("const char*", "pLayerName"),
              Param("uint32_t*", "pCount"),
              Param("VkExtensionProperties*", "pProperties")]),
 
-        Proto("VkResult", "GetPhysicalDeviceExtensionProperties",
+        Proto("VkResult", "EnumerateDeviceExtensionProperties",
             [Param("VkPhysicalDevice", "physicalDevice"),
              Param("const char*", "pLayerName"),
              Param("uint32_t*", "pCount"),
              Param("VkExtensionProperties*", "pProperties")]),
 
-        Proto("VkResult", "GetGlobalLayerProperties",
+        Proto("VkResult", "EnumerateInstanceLayerProperties",
             [Param("uint32_t*", "pCount"),
              Param("VkLayerProperties*", "pProperties")]),
 
-        Proto("VkResult", "GetPhysicalDeviceLayerProperties",
+        Proto("VkResult", "EnumerateDeviceLayerProperties",
             [Param("VkPhysicalDevice", "physicalDevice"),
              Param("uint32_t*", "pCount"),
              Param("VkLayerProperties*", "pProperties")]),
