diff --git a/include/vk_layer.h b/include/vk_layer.h
index 25c30e2..0259155 100644
--- a/include/vk_layer.h
+++ b/include/vk_layer.h
@@ -179,11 +179,10 @@
     PFN_vkDestroyInstance DestroyInstance;
     PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
     PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
-    PFN_vkGetPhysicalDeviceFormatInfo GetPhysicalDeviceFormatInfo;
+    PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
     PFN_vkGetPhysicalDeviceLimits GetPhysicalDeviceLimits;
     PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
     PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
-    PFN_vkGetPhysicalDevicePerformance GetPhysicalDevicePerformance;
     PFN_vkGetPhysicalDeviceQueueCount GetPhysicalDeviceQueueCount;
     PFN_vkGetPhysicalDeviceQueueProperties GetPhysicalDeviceQueueProperties;
     PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 8a7c672..7a04861 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -1825,7 +1825,7 @@
     return result;
 }
 
-bool PostGetPhysicalDeviceFormatInfo(
+bool PostGetPhysicalDeviceFormatProperties(
     VkPhysicalDevice physicalDevice,
     VkFormat format,
     VkFormatProperties* pFormatInfo,
@@ -1836,32 +1836,32 @@
         format > VK_FORMAT_END_RANGE)
     {
         log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkGetPhysicalDeviceFormatInfo parameter, VkFormat format, is unrecognized enumerator");
+        "vkGetPhysicalDeviceFormatProperties parameter, VkFormat format, is unrecognized enumerator");
         return false;
     }
 
     if(pFormatInfo == nullptr)
     {
         log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkGetPhysicalDeviceFormatInfo parameter, VkFormatProperties* pFormatInfo, is null pointer");
+        "vkGetPhysicalDeviceFormatProperties parameter, VkFormatProperties* pFormatInfo, is null pointer");
         return false;
     }
     if(!ValidateEnumerator((VkFormatFeatureFlagBits)pFormatInfo->linearTilingFeatures))
     {
-        std::string reason = "vkGetPhysicalDeviceFormatInfo parameter, VkFormatFeatureFlags pFormatInfo->linearTilingFeatures, is " + EnumeratorString((VkFormatFeatureFlagBits)pFormatInfo->linearTilingFeatures);
+        std::string reason = "vkGetPhysicalDeviceFormatProperties parameter, VkFormatFeatureFlags pFormatInfo->linearTilingFeatures, is " + EnumeratorString((VkFormatFeatureFlagBits)pFormatInfo->linearTilingFeatures);
         log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
         return false;
     }
     if(!ValidateEnumerator((VkFormatFeatureFlagBits)pFormatInfo->optimalTilingFeatures))
     {
-        std::string reason = "vkGetPhysicalDeviceFormatInfo parameter, VkFormatFeatureFlags pFormatInfo->optimalTilingFeatures, is " + EnumeratorString((VkFormatFeatureFlagBits)pFormatInfo->optimalTilingFeatures);
+        std::string reason = "vkGetPhysicalDeviceFormatProperties parameter, VkFormatFeatureFlags pFormatInfo->optimalTilingFeatures, is " + EnumeratorString((VkFormatFeatureFlagBits)pFormatInfo->optimalTilingFeatures);
         log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
         return false;
     }
 
     if(result != VK_SUCCESS)
     {
-        std::string reason = "vkGetPhysicalDeviceFormatInfo parameter, VkResult result, is " + EnumeratorString(result);
+        std::string reason = "vkGetPhysicalDeviceFormatProperties parameter, VkResult result, is " + EnumeratorString(result);
         log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
         return false;
     }
@@ -1869,14 +1869,14 @@
     return true;
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatInfo(
+VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatProperties(
     VkPhysicalDevice physicalDevice,
     VkFormat format,
     VkFormatProperties* pFormatInfo)
 {
-    VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceFormatInfo(physicalDevice, format, pFormatInfo);
+    VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatInfo);
 
-    PostGetPhysicalDeviceFormatInfo(physicalDevice, format, pFormatInfo, result);
+    PostGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatInfo, result);
 
     return result;
 }
@@ -1990,40 +1990,6 @@
     return result;
 }
 
-bool PostGetPhysicalDevicePerformance(
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDevicePerformance* pPerformance,
-    VkResult result)
-{
-
-    if(pPerformance == nullptr)
-    {
-        log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkGetPhysicalDevicePerformance parameter, VkPhysicalDevicePerformance* pPerformance, is null pointer");
-        return false;
-    }
-
-    if(result != VK_SUCCESS)
-    {
-        std::string reason = "vkGetPhysicalDevicePerformance parameter, VkResult result, is " + EnumeratorString(result);
-        log_msg(mdd(physicalDevice), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
-        return false;
-    }
-
-    return true;
-}
-
-VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDevicePerformance(
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDevicePerformance* pPerformance)
-{
-    VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDevicePerformance(physicalDevice, pPerformance);
-
-    PostGetPhysicalDevicePerformance(physicalDevice, pPerformance, result);
-
-    return result;
-}
-
 bool PostGetPhysicalDeviceQueueCount(
     VkPhysicalDevice physicalDevice,
     uint32_t* pCount,
@@ -8695,8 +8661,8 @@
         return (void*) vkGetPhysicalDeviceProperties;
     if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures"))
         return (void*) vkGetPhysicalDeviceFeatures;
-    if (!strcmp(funcName, "vkGetPhysicalDeviceFormatInfo"))
-        return (void*) vkGetPhysicalDeviceFormatInfo;
+    if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties"))
+        return (void*) vkGetPhysicalDeviceFormatProperties;
     if (!strcmp(funcName, "vkGetPhysicalDeviceLimits"))
         return (void*) vkGetPhysicalDeviceLimits;
     if (!strcmp(funcName, "vkGetGlobalLayerProperties"))
diff --git a/loader/gpa_helper.h b/loader/gpa_helper.h
index 08d3b60..43432d0 100644
--- a/loader/gpa_helper.h
+++ b/loader/gpa_helper.h
@@ -39,8 +39,6 @@
         return (void*) vkEnumeratePhysicalDevices;
     if (!strcmp(name, "GetPhysicalDeviceProperties"))
         return (void*) vkGetPhysicalDeviceProperties;
-    if (!strcmp(name, "GetPhysicalDevicePerformance"))
-        return (void*) vkGetPhysicalDevicePerformance;
     if (!strcmp(name, "GetPhysicalDeviceQueueCount"))
         return (void*) vkGetPhysicalDeviceQueueCount;
     if (!strcmp(name, "GetPhysicalDeviceQueueProperties"))
@@ -49,8 +47,8 @@
         return (void*) vkGetPhysicalDeviceMemoryProperties;
     if (!strcmp(name, "GetPhysicalDeviceFeatures"))
         return (void*) vkGetPhysicalDeviceFeatures;
-    if (!strcmp(name, "GetPhysicalDeviceFormatInfo"))
-        return (void*) vkGetPhysicalDeviceFormatInfo;
+    if (!strcmp(name, "GetPhysicalDeviceFormatProperties"))
+        return (void*) vkGetPhysicalDeviceFormatProperties;
     if (!strcmp(name, "GetPhysicalDeviceLimits"))
         return (void*) vkGetPhysicalDeviceLimits;
     if (!strcmp(name, "GetInstanceProcAddr"))
@@ -349,12 +347,10 @@
         return (void*) vkEnumeratePhysicalDevices;
     if (!strcmp(name, "GetPhysicalDeviceFeatures"))
         return (void*) vkGetPhysicalDeviceFeatures;
-    if (!strcmp(name, "GetPhysicalDeviceFormatInfo"))
-        return (void*) vkGetPhysicalDeviceFormatInfo;
+    if (!strcmp(name, "GetPhysicalDeviceFormatProperties"))
+        return (void*) vkGetPhysicalDeviceFormatProperties;
     if (!strcmp(name, "GetPhysicalDeviceLimits"))
         return (void*) vkGetPhysicalDeviceLimits;
-    if (!strcmp(name, "GetPhysicalDevicePerformance"))
-        return (void*) vkGetPhysicalDevicePerformance;
     if (!strcmp(name, "GetPhysicalDeviceQueueCount"))
         return (void*) vkGetPhysicalDeviceQueueCount;
     if (!strcmp(name, "GetPhysicalDeviceQueueProperties"))
diff --git a/loader/loader.c b/loader/loader.c
index 07d0416..12e2fe0 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -89,10 +89,9 @@
     .DestroyInstance = loader_DestroyInstance,
     .EnumeratePhysicalDevices = loader_EnumeratePhysicalDevices,
     .GetPhysicalDeviceFeatures = loader_GetPhysicalDeviceFeatures,
-    .GetPhysicalDeviceFormatInfo = loader_GetPhysicalDeviceFormatInfo,
+    .GetPhysicalDeviceFormatProperties = loader_GetPhysicalDeviceFormatProperties,
     .GetPhysicalDeviceLimits = loader_GetPhysicalDeviceLimits,
     .GetPhysicalDeviceProperties = loader_GetPhysicalDeviceProperties,
-    .GetPhysicalDevicePerformance = loader_GetPhysicalDevicePerformance,
     .GetPhysicalDeviceQueueCount = loader_GetPhysicalDeviceQueueCount,
     .GetPhysicalDeviceQueueProperties = loader_GetPhysicalDeviceQueueProperties,
     .GetPhysicalDeviceMemoryProperties = loader_GetPhysicalDeviceMemoryProperties,
@@ -1079,12 +1078,11 @@
     LOOKUP(DestroyInstance);
     LOOKUP(EnumeratePhysicalDevices);
     LOOKUP(GetPhysicalDeviceFeatures);
-    LOOKUP(GetPhysicalDeviceFormatInfo);
+    LOOKUP(GetPhysicalDeviceFormatProperties);
     LOOKUP(GetPhysicalDeviceLimits);
     LOOKUP(CreateDevice);
     LOOKUP(GetPhysicalDeviceProperties);
     LOOKUP(GetPhysicalDeviceMemoryProperties);
-    LOOKUP(GetPhysicalDevicePerformance);
     LOOKUP(GetPhysicalDeviceQueueCount);
     LOOKUP(GetPhysicalDeviceQueueProperties);
     LOOKUP(GetPhysicalDeviceExtensionProperties);
@@ -2633,20 +2631,6 @@
     return res;
 }
 
-VkResult loader_GetPhysicalDevicePerformance(
-        VkPhysicalDevice                        gpu,
-        VkPhysicalDevicePerformance*            pPerformance)
-{
-    uint32_t gpu_index;
-    struct loader_icd *icd = loader_get_icd(gpu, &gpu_index);
-    VkResult res = VK_ERROR_INITIALIZATION_FAILED;
-
-    if (icd->GetPhysicalDevicePerformance)
-        res = icd->GetPhysicalDevicePerformance(gpu, pPerformance);
-
-    return res;
-}
-
 VkResult loader_GetPhysicalDeviceQueueCount(
         VkPhysicalDevice                        gpu,
         uint32_t*                               pCount)
@@ -2704,7 +2688,7 @@
     return res;
 }
 
-VkResult loader_GetPhysicalDeviceFormatInfo(
+VkResult loader_GetPhysicalDeviceFormatProperties(
         VkPhysicalDevice                        physicalDevice,
         VkFormat                                format,
         VkFormatProperties*                     pFormatInfo)
@@ -2713,8 +2697,8 @@
     struct loader_icd *icd = loader_get_icd(physicalDevice, &gpu_index);
     VkResult res = VK_ERROR_INITIALIZATION_FAILED;
 
-    if (icd->GetPhysicalDeviceFormatInfo)
-        res = icd->GetPhysicalDeviceFormatInfo(physicalDevice, format, pFormatInfo);
+    if (icd->GetPhysicalDeviceFormatProperties)
+        res = icd->GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatInfo);
 
     return res;
 }
diff --git a/loader/loader.h b/loader/loader.h
index d5395d6..1714106 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -144,11 +144,10 @@
     PFN_vkDestroyInstance DestroyInstance;
     PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
     PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
-    PFN_vkGetPhysicalDeviceFormatInfo GetPhysicalDeviceFormatInfo;
+    PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
     PFN_vkGetPhysicalDeviceLimits GetPhysicalDeviceLimits;
     PFN_vkCreateDevice CreateDevice;
     PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
-    PFN_vkGetPhysicalDevicePerformance GetPhysicalDevicePerformance;
     PFN_vkGetPhysicalDeviceQueueCount GetPhysicalDeviceQueueCount;
     PFN_vkGetPhysicalDeviceQueueProperties GetPhysicalDeviceQueueProperties;
     PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
@@ -362,7 +361,7 @@
         VkPhysicalDevice                        physicalDevice,
         VkPhysicalDeviceFeatures*               pFeatures);
 
-VkResult loader_GetPhysicalDeviceFormatInfo(
+VkResult loader_GetPhysicalDeviceFormatProperties(
         VkPhysicalDevice                        physicalDevice,
         VkFormat                                format,
         VkFormatProperties*                     pFormatInfo);
@@ -385,10 +384,6 @@
         VkPhysicalDevice physicalDevice,
         VkPhysicalDeviceProperties* pProperties);
 
-VkResult loader_GetPhysicalDevicePerformance (
-        VkPhysicalDevice physicalDevice,
-        VkPhysicalDevicePerformance* pPerformance);
-
 VkResult loader_GetPhysicalDeviceExtensionProperties (VkPhysicalDevice physicalDevice,
         const char *pLayerName, uint32_t *pCount,
         VkExtensionProperties* pProperties);
diff --git a/loader/table_ops.h b/loader/table_ops.h
index 9bcd129..bbb83e0 100644
--- a/loader/table_ops.h
+++ b/loader/table_ops.h
@@ -467,10 +467,9 @@
     table->DestroyInstance = (PFN_vkDestroyInstance) gpa(inst, "vkDestroyInstance");
     table->EnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices) gpa(inst, "vkEnumeratePhysicalDevices");
     table->GetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures) gpa(inst, "vkGetPhysicalDeviceFeatures");
-    table->GetPhysicalDeviceFormatInfo = (PFN_vkGetPhysicalDeviceFormatInfo) gpa(inst, "vkGetPhysicalDeviceFormatInfo");
+    table->GetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties) gpa(inst, "vkGetPhysicalDeviceFormatProperties");
     table->GetPhysicalDeviceLimits = (PFN_vkGetPhysicalDeviceLimits) gpa(inst, "vkGetPhysicalDeviceLimits");
     table->GetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties) gpa(inst, "vkGetPhysicalDeviceProperties");
-    table->GetPhysicalDevicePerformance = (PFN_vkGetPhysicalDevicePerformance) gpa(inst, "vkGetPhysicalDevicePerformance");
     table->GetPhysicalDeviceQueueCount = (PFN_vkGetPhysicalDeviceQueueCount) gpa(inst, "vkGetPhysicalDeviceQueueCount");
     table->GetPhysicalDeviceQueueProperties = (PFN_vkGetPhysicalDeviceQueueProperties) gpa(inst, "vkGetPhysicalDeviceQueueProperties");
     table->GetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties) gpa(inst, "vkGetPhysicalDeviceMemoryProperties");
@@ -504,16 +503,14 @@
         return (void *) table->EnumeratePhysicalDevices;
     if (!strcmp(name, "GetPhysicalDeviceFeatures"))
         return (void *) table->GetPhysicalDeviceFeatures;
-    if (!strcmp(name, "GetPhysicalDeviceFormatInfo"))
-        return (void *) table->GetPhysicalDeviceFormatInfo;
+    if (!strcmp(name, "GetPhysicalDeviceFormatProperties"))
+        return (void *) table->GetPhysicalDeviceFormatProperties;
     if (!strcmp(name, "GetPhysicalDeviceLimits"))
         return (void *) table->GetPhysicalDeviceLimits;
     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties"))
         return (void *) table->GetPhysicalDeviceSparseImageFormatProperties;
     if (!strcmp(name, "GetPhysicalDeviceProperties"))
         return (void *) table->GetPhysicalDeviceProperties;
-    if (!strcmp(name, "GetPhysicalDevicePerformance"))
-        return (void *) table->GetPhysicalDevicePerformance;
     if (!strcmp(name, "GetPhysicalDeviceQueueCount"))
         return (void *) table->GetPhysicalDeviceQueueCount;
     if (!strcmp(name, "GetPhysicalDeviceQueueProperties"))
diff --git a/loader/trampoline.c b/loader/trampoline.c
index 183062c..358ab23 100644
--- a/loader/trampoline.c
+++ b/loader/trampoline.c
@@ -182,18 +182,6 @@
     return res;
 }
 
-LOADER_EXPORT VkResult VKAPI vkGetPhysicalDevicePerformance(
-                                            VkPhysicalDevice gpu,
-                                            VkPhysicalDevicePerformance* pPerformance)
-{
-    const VkLayerInstanceDispatchTable *disp;
-    VkResult res;
-
-    disp = loader_get_instance_dispatch(gpu);
-    res = disp->GetPhysicalDevicePerformance(gpu, pPerformance);
-    return res;
-}
-
 LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceQueueCount(
                                             VkPhysicalDevice gpu,
                                             uint32_t* pCount)
@@ -243,7 +231,7 @@
     return res;
 }
 
-LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatInfo(
+LOADER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatProperties(
                                             VkPhysicalDevice gpu,
                                             VkFormat format,
                                             VkFormatProperties *pFormatInfo)
@@ -252,7 +240,7 @@
     VkResult res;
 
     disp = loader_get_instance_dispatch(gpu);
-    res = disp->GetPhysicalDeviceFormatInfo(gpu, format, pFormatInfo);
+    res = disp->GetPhysicalDeviceFormatProperties(gpu, format, pFormatInfo);
     return res;
 }
 
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index fe75e5b..4508c4e 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -1275,7 +1275,7 @@
         VkFormatProperties props;
         VkResult err;
 
-        err = vkGetPhysicalDeviceFormatInfo(dev_.phy().handle(), it->format, &props);
+        err = vkGetPhysicalDeviceFormatProperties(dev_.phy().handle(), it->format, &props);
         ASSERT_EQ(err, VK_SUCCESS);
 
         if (it->tiling == VK_IMAGE_TILING_LINEAR && !(props.linearTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT))
@@ -1442,7 +1442,7 @@
         VkFormatProperties props;
         VkResult err;
 
-        err = vkGetPhysicalDeviceFormatInfo(dev_.phy().handle(), it->format, &props);
+        err = vkGetPhysicalDeviceFormatProperties(dev_.phy().handle(), it->format, &props);
         ASSERT_EQ(err, VK_SUCCESS);
 
         if (it->tiling == VK_IMAGE_TILING_LINEAR && !(props.linearTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT))
diff --git a/tests/image_tests.cpp b/tests/image_tests.cpp
index 0504d96..a282d15 100644
--- a/tests/image_tests.cpp
+++ b/tests/image_tests.cpp
@@ -150,7 +150,7 @@
      * amount of data may vary and that doesn't work well for using a
      * fixed structure.
      */
-    err = vkGetPhysicalDeviceFormatInfo(this->objs[0], fmt, &image_fmt);
+    err = vkGetPhysicalDeviceFormatProperties(this->objs[0], fmt, &image_fmt);
     ASSERT_VK_SUCCESS(err);
 
     //    typedef struct VkImageCreateInfo_
diff --git a/tests/init.cpp b/tests/init.cpp
index 57bf875..e4102ea 100644
--- a/tests/init.cpp
+++ b/tests/init.cpp
@@ -314,7 +314,7 @@
      * fixed structure.
      */
 
-    err = vkGetPhysicalDeviceFormatInfo(objs[m_device_id], fmt, &image_fmt);
+    err = vkGetPhysicalDeviceFormatProperties(objs[m_device_id], fmt, &image_fmt);
     ASSERT_VK_SUCCESS(err);
 
 //    typedef struct VkImageCreateInfo_
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index a35befe..f16f8c0 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -314,7 +314,7 @@
         VkFormatProperties props;
         VkResult err;
 
-        err = vkGetPhysicalDeviceFormatInfo(m_device->phy().handle(), m_render_target_fmt, &props);
+        err = vkGetPhysicalDeviceFormatProperties(m_device->phy().handle(), m_render_target_fmt, &props);
         ASSERT_VK_SUCCESS(err);
 
         if (props.linearTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) {
@@ -691,7 +691,7 @@
         mipCount++;
     }
 
-    err = vkGetPhysicalDeviceFormatInfo(m_device->phy().handle(), fmt, &image_fmt);
+    err = vkGetPhysicalDeviceFormatProperties(m_device->phy().handle(), fmt, &image_fmt);
     ASSERT_VK_SUCCESS(err);
 
     if (requested_tiling == VK_IMAGE_TILING_LINEAR) {
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 1c2d94d..23d1377 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -96,15 +96,6 @@
     return info;
 }
 
-VkPhysicalDevicePerformance PhysicalDevice::performance() const
-{
-    VkPhysicalDevicePerformance info;
-
-    EXPECT(vkGetPhysicalDevicePerformance(handle(), &info) == VK_SUCCESS);
-
-    return info;
-}
-
 std::vector<VkPhysicalDeviceQueueProperties> PhysicalDevice::queue_properties() const
 {
     std::vector<VkPhysicalDeviceQueueProperties> info;
@@ -378,7 +369,7 @@
 VkFormatProperties Device::format_properties(VkFormat format)
 {
     VkFormatProperties data;
-    if (!EXPECT(vkGetPhysicalDeviceFormatInfo(phy().handle(), format, &data) == VK_SUCCESS))
+    if (!EXPECT(vkGetPhysicalDeviceFormatProperties(phy().handle(), format, &data) == VK_SUCCESS))
         memset(&data, 0, sizeof(data));
 
     return data;
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index 67c592a..dad002c 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -124,7 +124,6 @@
     }
 
     VkPhysicalDeviceProperties properties() const;
-    VkPhysicalDevicePerformance performance() const;
     VkPhysicalDeviceMemoryProperties memory_properties() const;
     std::vector<VkPhysicalDeviceQueueProperties> queue_properties() const;
 
diff --git a/vulkan.py b/vulkan.py
index 8db4334..df9a778 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -232,7 +232,7 @@
             [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkPhysicalDeviceFeatures*", "pFeatures")]),
 
-        Proto("VkResult", "GetPhysicalDeviceFormatInfo",
+        Proto("VkResult", "GetPhysicalDeviceFormatProperties",
             [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkFormat", "format"),
              Param("VkFormatProperties*", "pFormatInfo")]),
@@ -261,10 +261,6 @@
             [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkPhysicalDeviceProperties*", "pProperties")]),
 
-        Proto("VkResult", "GetPhysicalDevicePerformance",
-            [Param("VkPhysicalDevice", "physicalDevice"),
-             Param("VkPhysicalDevicePerformance*", "pPerformance")]),
-
         Proto("VkResult", "GetPhysicalDeviceQueueCount",
             [Param("VkPhysicalDevice", "physicalDevice"),
              Param("uint32_t*", "pCount")]),
