diff --git a/src/Vulkan/BUILD.gn b/src/Vulkan/BUILD.gn
index 1612e1a..e20282c 100644
--- a/src/Vulkan/BUILD.gn
+++ b/src/Vulkan/BUILD.gn
@@ -72,6 +72,7 @@
     "VkDestroy.hpp",
     "VkDevice.hpp",
     "VkDeviceMemory.hpp",
+    "VkDeviceMemoryExternalHost.hpp",
     "VkEvent.hpp",
     "VkFence.hpp",
     "VkFormat.hpp",
@@ -124,6 +125,7 @@
     "VkDescriptorUpdateTemplate.cpp",
     "VkDevice.cpp",
     "VkDeviceMemory.cpp",
+    "VkDeviceMemoryExternalHost.cpp",
     "VkFormat.cpp",
     "VkFramebuffer.cpp",
     "VkGetProcAddress.cpp",
diff --git a/src/Vulkan/CMakeLists.txt b/src/Vulkan/CMakeLists.txt
index 6c9e696..fd21cd1 100644
--- a/src/Vulkan/CMakeLists.txt
+++ b/src/Vulkan/CMakeLists.txt
@@ -46,6 +46,8 @@
     VkDevice.hpp
     VkDeviceMemory.cpp
     VkDeviceMemory.hpp
+    VkDeviceMemoryExternalHost.cpp
+    VkDeviceMemoryExternalHost.hpp
     VkDeviceMemoryExternalLinux.hpp
     VkEvent.hpp
     VkFence.hpp
diff --git a/src/Vulkan/VkDeviceMemory.cpp b/src/Vulkan/VkDeviceMemory.cpp
index aa6d7e2..bb0eaa8 100644
--- a/src/Vulkan/VkDeviceMemory.cpp
+++ b/src/Vulkan/VkDeviceMemory.cpp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 #include "VkDeviceMemory.hpp"
+#include "VkDeviceMemoryExternalHost.hpp"
 
 #include "VkBuffer.hpp"
 #include "VkConfig.hpp"
@@ -21,68 +22,6 @@
 #include "VkMemory.hpp"
 #include "VkStringify.hpp"
 
-// Host-allocated memory and host-mapped foreign memory
-class ExternalMemoryHost : public vk::DeviceMemory, public vk::ObjectBase<ExternalMemoryHost, VkDeviceMemory>
-{
-public:
-	struct AllocateInfo
-	{
-		bool supported = false;
-		void *hostPointer = nullptr;
-
-		AllocateInfo() = default;
-
-		AllocateInfo(const vk::DeviceMemory::ExtendedAllocationInfo &extendedAllocationInfo)
-		{
-			if(extendedAllocationInfo.importMemoryHostPointerInfo)
-			{
-				if((extendedAllocationInfo.importMemoryHostPointerInfo->handleType != VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT) &&
-				   (extendedAllocationInfo.importMemoryHostPointerInfo->handleType != VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT))
-				{
-					UNSUPPORTED("extendedAllocationInfo.importMemoryHostPointerInfo->handleType, %d",
-					            int(extendedAllocationInfo.importMemoryHostPointerInfo->handleType));
-				}
-				hostPointer = extendedAllocationInfo.importMemoryHostPointerInfo->pHostPointer;
-				supported = true;
-			}
-		}
-	};
-
-	static const VkExternalMemoryHandleTypeFlagBits typeFlagBit = (VkExternalMemoryHandleTypeFlagBits)(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT | VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT);
-
-	static bool SupportsAllocateInfo(const vk::DeviceMemory::ExtendedAllocationInfo &extendedAllocationInfo)
-	{
-		AllocateInfo info(extendedAllocationInfo);
-		return info.supported;
-	}
-
-	explicit ExternalMemoryHost(const VkMemoryAllocateInfo *pCreateInfo, void *mem, const DeviceMemory::ExtendedAllocationInfo &extendedAllocationInfo, vk::Device *pDevice)
-	    : vk::DeviceMemory(pCreateInfo, pDevice)
-	    , allocateInfo(extendedAllocationInfo)
-	{}
-
-	VkResult allocateBuffer() override
-	{
-		if(allocateInfo.supported)
-		{
-			buffer = allocateInfo.hostPointer;
-			return VK_SUCCESS;
-		}
-		return VK_ERROR_INVALID_EXTERNAL_HANDLE;
-	}
-
-	void freeBuffer() override
-	{}
-
-	VkExternalMemoryHandleTypeFlagBits getFlagBit() const override
-	{
-		return typeFlagBit;
-	}
-
-private:
-	AllocateInfo allocateInfo;
-};
-
 #if SWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD
 
 // Helper struct which reads the parsed allocation info and
diff --git a/src/Vulkan/VkDeviceMemoryExternalHost.cpp b/src/Vulkan/VkDeviceMemoryExternalHost.cpp
new file mode 100644
index 0000000..13022ac
--- /dev/null
+++ b/src/Vulkan/VkDeviceMemoryExternalHost.cpp
@@ -0,0 +1,59 @@
+// Copyright 2021 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "VkDeviceMemoryExternalHost.hpp"
+
+ExternalMemoryHost::AllocateInfo::AllocateInfo(const vk::DeviceMemory::ExtendedAllocationInfo &extendedAllocationInfo)
+{
+	if(extendedAllocationInfo.importMemoryHostPointerInfo)
+	{
+		if((extendedAllocationInfo.importMemoryHostPointerInfo->handleType != VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT) &&
+		   (extendedAllocationInfo.importMemoryHostPointerInfo->handleType != VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT))
+		{
+			UNSUPPORTED("extendedAllocationInfo.importMemoryHostPointerInfo->handleType, %d",
+			            int(extendedAllocationInfo.importMemoryHostPointerInfo->handleType));
+		}
+		hostPointer = extendedAllocationInfo.importMemoryHostPointerInfo->pHostPointer;
+		supported = true;
+	}
+}
+
+bool ExternalMemoryHost::SupportsAllocateInfo(const vk::DeviceMemory::ExtendedAllocationInfo &extendedAllocationInfo)
+{
+	AllocateInfo info(extendedAllocationInfo);
+	return info.supported;
+}
+
+ExternalMemoryHost::ExternalMemoryHost(const VkMemoryAllocateInfo *pCreateInfo, void *mem, const DeviceMemory::ExtendedAllocationInfo &extendedAllocationInfo, vk::Device *pDevice)
+    : vk::DeviceMemory(pCreateInfo, pDevice)
+    , allocateInfo(extendedAllocationInfo)
+{}
+
+VkResult ExternalMemoryHost::allocateBuffer()
+{
+	if(allocateInfo.supported)
+	{
+		buffer = allocateInfo.hostPointer;
+		return VK_SUCCESS;
+	}
+	return VK_ERROR_INVALID_EXTERNAL_HANDLE;
+}
+
+void ExternalMemoryHost::freeBuffer()
+{}
+
+VkExternalMemoryHandleTypeFlagBits ExternalMemoryHost::getFlagBit() const
+{
+	return typeFlagBit;
+}
\ No newline at end of file
diff --git a/src/Vulkan/VkDeviceMemoryExternalHost.hpp b/src/Vulkan/VkDeviceMemoryExternalHost.hpp
new file mode 100644
index 0000000..ce13be3
--- /dev/null
+++ b/src/Vulkan/VkDeviceMemoryExternalHost.hpp
@@ -0,0 +1,48 @@
+// Copyright 2021 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef VK_DEVICE_MEMORY_EXTERNAL_HOST_HPP_
+#define VK_DEVICE_MEMORY_EXTERNAL_HOST_HPP_
+
+#include "VkDeviceMemory.hpp"
+
+// Host-allocated memory and host-mapped foreign memory
+class ExternalMemoryHost : public vk::DeviceMemory, public vk::ObjectBase<ExternalMemoryHost, VkDeviceMemory>
+{
+public:
+	struct AllocateInfo
+	{
+		bool supported = false;
+		void *hostPointer = nullptr;
+
+		AllocateInfo() = default;
+
+		AllocateInfo(const vk::DeviceMemory::ExtendedAllocationInfo &extendedAllocationInfo);
+	};
+
+	static const VkExternalMemoryHandleTypeFlagBits typeFlagBit = (VkExternalMemoryHandleTypeFlagBits)(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT | VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT);
+
+	static bool SupportsAllocateInfo(const vk::DeviceMemory::ExtendedAllocationInfo &extendedAllocationInfo);
+
+	explicit ExternalMemoryHost(const VkMemoryAllocateInfo *pCreateInfo, void *mem, const DeviceMemory::ExtendedAllocationInfo &extendedAllocationInfo, vk::Device *pDevice);
+
+	VkResult allocateBuffer() override;
+	void freeBuffer() override;
+	VkExternalMemoryHandleTypeFlagBits getFlagBit() const override;
+
+private:
+	AllocateInfo allocateInfo;
+};
+
+#endif  // VK_DEVICE_MEMORY_EXTERNAL_HOST_HPP_
