diff --git a/src/Vulkan/VkGetProcAddress.cpp b/src/Vulkan/VkGetProcAddress.cpp
index 8a8b759..d61f600 100644
--- a/src/Vulkan/VkGetProcAddress.cpp
+++ b/src/Vulkan/VkGetProcAddress.cpp
@@ -16,8 +16,6 @@
 #include "VkDevice.hpp"
 
 #include <string>
-#include <tuple>
-#include <type_traits>
 #include <unordered_map>
 #include <vector>
 
@@ -42,51 +40,17 @@
 	MAKE_VULKAN_GLOBAL_ENTRY(vkEnumerateInstanceExtensionProperties),
 	MAKE_VULKAN_GLOBAL_ENTRY(vkEnumerateInstanceLayerProperties),
 	MAKE_VULKAN_GLOBAL_ENTRY(vkEnumerateInstanceVersion),
-
-	MAKE_VULKAN_GLOBAL_ENTRY(vk_icdGetInstanceProcAddr),
-	MAKE_VULKAN_GLOBAL_ENTRY(vk_icdNegotiateLoaderICDInterfaceVersion),
-#if VK_USE_PLATFORM_WIN32_KHR
-	MAKE_VULKAN_GLOBAL_ENTRY(vk_icdEnumerateAdapterPhysicalDevices),
-#endif  // VK_USE_PLATFORM_WIN32_KHR
 };
 #undef MAKE_VULKAN_GLOBAL_ENTRY
 
 // Functions that can be obtained through GetInstanceProcAddr with an instance object
-struct InstanceFunctionEntry
-{
-	PFN_vkVoidFunction pfn;
-	// True if the first argument is a VkPhysicalDevice. See
-	// https://github.com/KhronosGroup/Vulkan-Loader/blob/main/docs/LoaderDriverInterface.md#reason-for-adding-vk_icdgetphysicaldeviceprocaddr
-	bool isPhysicalDeviceFn;
-};
-
-// Template magic to detect if the first argument of a C function is a VkPhysicalDevice.
-template<typename T>
-struct FunctionArgs
-{};
-
-template<typename R, typename... Args>
-struct FunctionArgs<VKAPI_ATTR R VKAPI_CALL(Args...)>
-{
-	using Tuple = std::tuple<Args...>;
-	using FirstType = typename std::tuple_element<0, Tuple>::type;
-};
-
-template<typename T>
-constexpr bool HasPhysicalDeviceFirstArgument =
-    std::is_same<typename FunctionArgs<T>::FirstType, VkPhysicalDevice>::value;
-
-#define MAKE_VULKAN_INSTANCE_ENTRY(aFunction)                       \
-	{                                                               \
-		#aFunction,                                                 \
-		{                                                           \
-			reinterpret_cast<PFN_vkVoidFunction>(aFunction),        \
-			    HasPhysicalDeviceFirstArgument<decltype(aFunction)> \
-		}                                                           \
+#define MAKE_VULKAN_INSTANCE_ENTRY(aFunction)                         \
+	{                                                                 \
+#		aFunction, reinterpret_cast < PFN_vkVoidFunction>(aFunction) \
 	}
 
 // TODO(b/208256248): Avoid exit-time destructor.
-static const std::unordered_map<std::string, InstanceFunctionEntry> instanceFunctionPointers = {
+static const std::unordered_map<std::string, PFN_vkVoidFunction> instanceFunctionPointers = {
 
 	MAKE_VULKAN_INSTANCE_ENTRY(vkDestroyInstance),
 	MAKE_VULKAN_INSTANCE_ENTRY(vkEnumeratePhysicalDevices),
@@ -688,7 +652,7 @@
 		auto instanceFunction = instanceFunctionPointers.find(std::string(pName));
 		if(instanceFunction != instanceFunctionPointers.end())
 		{
-			return instanceFunction->second.pfn;
+			return instanceFunction->second;
 		}
 
 		auto deviceFunction = deviceFunctionPointers.find(std::string(pName));
@@ -710,33 +674,6 @@
 	return nullptr;
 }
 
-PFN_vkVoidFunction GetPhysicalDeviceProcAddr(Instance *instance, const char *pName)
-{
-	// This function must return nullptr if the name is not known, or the function doesn't take a
-	// VkPhysicalDevice as the first argument. All functions that have a VkPhysicalDevice as first
-	// argument are instance function, except for vkGetPhysicalDeviceToolPropertiesEXT which seems
-	// to have been miscategorized as a device extension when it was made. So we special case that
-	// funcion.
-	std::string name = pName;
-	if(name == "vkGetPhysicalDeviceToolPropertiesEXT")
-	{
-		return reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceToolPropertiesEXT);
-	}
-
-	auto instanceFunction = instanceFunctionPointers.find(name);
-	if(instanceFunction == instanceFunctionPointers.end())
-	{
-		return nullptr;
-	}
-
-	if(!instanceFunction->second.isPhysicalDeviceFn)
-	{
-		return nullptr;
-	}
-
-	return instanceFunction->second.pfn;
-}
-
 PFN_vkVoidFunction GetDeviceProcAddr(Device *device, const char *pName)
 {
 	auto deviceFunction = deviceFunctionPointers.find(std::string(pName));
diff --git a/src/Vulkan/VkGetProcAddress.hpp b/src/Vulkan/VkGetProcAddress.hpp
index 49101ba..03c467f 100644
--- a/src/Vulkan/VkGetProcAddress.hpp
+++ b/src/Vulkan/VkGetProcAddress.hpp
@@ -23,7 +23,6 @@
 class Instance;
 
 PFN_vkVoidFunction GetInstanceProcAddr(Instance *instance, const char *pName);
-PFN_vkVoidFunction GetPhysicalDeviceProcAddr(Instance *instance, const char *pName);
 PFN_vkVoidFunction GetDeviceProcAddr(Device *device, const char *pName);
 
 }  // namespace vk
diff --git a/src/Vulkan/android_host_vk_swiftshader.lds b/src/Vulkan/android_host_vk_swiftshader.lds
index 7318bbb..d9663ed 100644
--- a/src/Vulkan/android_host_vk_swiftshader.lds
+++ b/src/Vulkan/android_host_vk_swiftshader.lds
@@ -3,7 +3,6 @@
 	# Loader-ICD interface functions
 	vk_icdGetInstanceProcAddr;
 	vk_icdNegotiateLoaderICDInterfaceVersion;
-	vk_icdGetPhysicalDeviceProcAddr;
 
 	# Vulkan 1.0 API entry functions
 	vkCreateInstance;
diff --git a/src/Vulkan/android_vk_swiftshader.lds b/src/Vulkan/android_vk_swiftshader.lds
index b88bad3..be404d9 100644
--- a/src/Vulkan/android_vk_swiftshader.lds
+++ b/src/Vulkan/android_vk_swiftshader.lds
@@ -4,7 +4,6 @@
 	# Loader-ICD interface functions
 	vk_icdGetInstanceProcAddr;
 	vk_icdNegotiateLoaderICDInterfaceVersion;
-	vk_icdGetPhysicalDeviceProcAddr;
 
 	# Android HAL module info object
 	HMI;
diff --git a/src/Vulkan/fuchsia_vk_swiftshader.lds b/src/Vulkan/fuchsia_vk_swiftshader.lds
index c4f4464..2237ffb 100644
--- a/src/Vulkan/fuchsia_vk_swiftshader.lds
+++ b/src/Vulkan/fuchsia_vk_swiftshader.lds
@@ -6,7 +6,6 @@
 	# Loader-ICD interface functions
 	vk_icdGetInstanceProcAddr;
 	vk_icdNegotiateLoaderICDInterfaceVersion;
-	vk_icdGetPhysicalDeviceProcAddr;
 	vk_icdInitializeConnectToServiceCallback;
 
 local:
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index 275cf88..5360f95 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -96,7 +96,6 @@
 
 #include <algorithm>
 #include <cinttypes>
-#include <cmath>
 #include <cstring>
 #include <functional>
 #include <map>
@@ -237,11 +236,6 @@
 	}
 }
 
-// This variable will be set to the negotiated ICD interface version negotiated with the loader.
-// It defaults to 1 because if vk_icdNegotiateLoaderICDInterfaceVersion is never called it means
-// that the loader doens't support version 2 of that interface.
-uint32_t sICDInterfaceVersion = 1;
-
 }  // namespace
 
 extern "C" {
@@ -254,30 +248,10 @@
 
 VK_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t *pSupportedVersion)
 {
-	sICDInterfaceVersion = std::min(*pSupportedVersion, 7u);
-	*pSupportedVersion = sICDInterfaceVersion;
+	*pSupportedVersion = 3;
 	return VK_SUCCESS;
 }
 
-VK_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance instance, const char *pName)
-{
-	return vk::GetPhysicalDeviceProcAddr(vk::Cast(instance), pName);
-}
-
-#if VK_USE_PLATFORM_WIN32_KHR
-
-VKAPI_ATTR VkResult VKAPI_CALL vk_icdEnumerateAdapterPhysicalDevices(VkInstance instance, LUID adapterLUID, uint32_t *pPhysicalDeviceCount, VkPhysicalDevice *pPhysicalDevices)
-{
-	if(!pPhysicalDevices)
-	{
-		*pPhysicalDeviceCount = 0;
-	}
-
-	return VK_SUCCESS;
-}
-
-#endif  // VK_USE_PLATFORM_WIN32_KHR
-
 #if VK_USE_PLATFORM_FUCHSIA
 
 // This symbol must be exported by a Fuchsia Vulkan ICD. The Vulkan loader will
@@ -546,39 +520,6 @@
 
 	initializeLibrary();
 
-	// ICD interface rule for version 5 of the interface:
-	//    - If the loader supports version 4 or lower, the driver must fail with
-	//      VK_ERROR_INCOMPATIBLE_DRIVER for all vkCreateInstance calls with apiVersion
-	//      set to > Vulkan 1.0
-	//    - If the loader supports version 5 or above, the loader must fail with
-	//      VK_ERROR_INCOMPATIBLE_DRIVER if it can't handle the apiVersion, and drivers
-	//      should fail with VK_ERROR_INCOMPATIBLE_DRIVER only if they can not support the
-	//      specified apiVersion.
-	if(pCreateInfo->pApplicationInfo)
-	{
-		uint32_t appApiVersion = pCreateInfo->pApplicationInfo->apiVersion;
-		if(sICDInterfaceVersion <= 4)
-		{
-			// Any version above 1.0 is an error.
-			if(VK_API_VERSION_MAJOR(appApiVersion) != 1 || VK_API_VERSION_MINOR(appApiVersion) != 0)
-			{
-				return VK_ERROR_INCOMPATIBLE_DRIVER;
-			}
-		}
-		else
-		{
-			if(VK_API_VERSION_MAJOR(appApiVersion) > VK_API_VERSION_MINOR(vk::API_VERSION))
-			{
-				return VK_ERROR_INCOMPATIBLE_DRIVER;
-			}
-			if((VK_API_VERSION_MAJOR(appApiVersion) == VK_API_VERSION_MINOR(vk::API_VERSION)) &&
-			   VK_API_VERSION_MINOR(appApiVersion) > VK_API_VERSION_MINOR(vk::API_VERSION))
-			{
-				return VK_ERROR_INCOMPATIBLE_DRIVER;
-			}
-		}
-	}
-
 	if(pCreateInfo->flags != 0)
 	{
 		// Vulkan 1.3: "flags is reserved for future use." "flags must be 0"
diff --git a/src/Vulkan/vk_swiftshader.def b/src/Vulkan/vk_swiftshader.def
index 3e3aca4f..27354ef 100644
--- a/src/Vulkan/vk_swiftshader.def
+++ b/src/Vulkan/vk_swiftshader.def
@@ -3,8 +3,6 @@
 	; Loader-ICD interface functions
 	vk_icdGetInstanceProcAddr
 	vk_icdNegotiateLoaderICDInterfaceVersion
-	vk_icdGetPhysicalDeviceProcAddr
-	vk_icdEnumerateAdapterPhysicalDevices
 
 	; Vulkan 1.0 API entry functions
 	vkCreateInstance
diff --git a/src/Vulkan/vk_swiftshader.exports b/src/Vulkan/vk_swiftshader.exports
index 68819a3..1153f00 100644
--- a/src/Vulkan/vk_swiftshader.exports
+++ b/src/Vulkan/vk_swiftshader.exports
@@ -3,7 +3,6 @@
 # Loader-ICD interface functions
 _vk_icdGetInstanceProcAddr
 _vk_icdNegotiateLoaderICDInterfaceVersion
-_vk_icdGetPhysicalDeviceProcAddr
 
 # Type-strings and type-infos required by sanitizers
 _ZTS*
diff --git a/src/Vulkan/vk_swiftshader.lds b/src/Vulkan/vk_swiftshader.lds
index 38ed734..873e9cd 100644
--- a/src/Vulkan/vk_swiftshader.lds
+++ b/src/Vulkan/vk_swiftshader.lds
@@ -3,7 +3,6 @@
 	# Loader-ICD interface functions
 	vk_icdGetInstanceProcAddr;
 	vk_icdNegotiateLoaderICDInterfaceVersion;
-	vk_icdGetPhysicalDeviceProcAddr;
 
 	# Vulkan 1.0 API entry functions
 	vkCreateInstance;
