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;
 
