diff --git a/system/vulkan/goldfish_vulkan.cpp b/system/vulkan/goldfish_vulkan.cpp
index 4e80c45..d0978d2 100644
--- a/system/vulkan/goldfish_vulkan.cpp
+++ b/system/vulkan/goldfish_vulkan.cpp
@@ -143,11 +143,6 @@
     },
 };
 
-int CloseDevice(struct hw_device_t* /*device*/) {
-    // nothing to do - opening a device doesn't allocate any resources
-    return 0;
-}
-
 #define VK_HOST_CONNECTION(ret) \
     HostConnection *hostCon = HostConnection::get(); \
     if (!hostCon) { \
@@ -167,6 +162,50 @@
     goldfish_vk::ResourceTracker::get()->setupFeatures(rcEnc->featureInfo_const()); \
     auto hostSupportsVulkan = goldfish_vk::ResourceTracker::get()->hostSupportsVulkan(); \
 
+int CloseDevice(struct hw_device_t* /*device*/) {
+    VK_HOST_CONNECTION(-1)
+
+    if (!hostSupportsVulkan) {
+        // nothing to do - opening a device doesn't allocate any resources
+        return 0;
+    }
+
+    goldfish_vk::TeardownFuncs teardownFuncs;
+    teardownFuncs.vkDeviceWaitIdle =
+        (PFN_vkDeviceWaitIdle)goldfish_vk::goldfish_vulkan_get_proc_address("vkDeviceWaitIdle");
+
+#define GET_TEARDOWN_PROC_ADDR(func) \
+    teardownFuncs.func = (PFN_##func)goldfish_vk::goldfish_vulkan_get_proc_address(#func);
+
+    GET_TEARDOWN_PROC_ADDR(vkDestroyInstance)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyDevice)
+    GET_TEARDOWN_PROC_ADDR(vkDestroySemaphore)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyFence)
+    GET_TEARDOWN_PROC_ADDR(vkFreeMemory)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyBuffer)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyImage)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyEvent)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyQueryPool)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyBufferView)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyImageView)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyShaderModule)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyPipelineCache)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyPipelineLayout)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyRenderPass)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyPipeline)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyDescriptorSetLayout)
+    GET_TEARDOWN_PROC_ADDR(vkDestroySampler)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyDescriptorPool)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyFramebuffer)
+    GET_TEARDOWN_PROC_ADDR(vkDestroyCommandPool)
+
+    goldfish_vk::ResourceTracker::get()->teardown(
+        (void*)vkEnc,
+        teardownFuncs);
+
+    return 0;
+}
+
 VKAPI_ATTR
 VkResult EnumerateInstanceExtensionProperties(
     const char* layer_name,
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 3cacf39..31b4e6d 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -199,6 +199,23 @@
         info_VkDeviceMemory.erase(mem);
     }
 
+    void teardown(void* context, const TeardownFuncs& vk) {
+        VkEncoder* enc = (VkEncoder*)context;
+        // TODO
+        (void)enc;
+
+        for (auto it : info_VkDevice) {
+            auto device = it.first;
+            vk.vkDeviceWaitIdle(device);
+            vk.vkDestroyDevice(device, nullptr);
+        }
+
+        for (auto it : info_VkInstance) {
+            auto instance = it.first;
+            vk.vkDestroyInstance(instance, nullptr);
+        }
+    }
+
     // TODO: Upgrade to 1.1
     static constexpr uint32_t kMaxApiVersion = VK_MAKE_VERSION(1, 0, 65);
     static constexpr uint32_t kMinApiVersion = VK_MAKE_VERSION(1, 0, 0);
@@ -1107,6 +1124,12 @@
     return sTracker;
 }
 
+void ResourceTracker::teardown(
+        void* context,
+        const TeardownFuncs& funcs) {
+    mImpl->teardown(context, funcs);
+}
+
 #define HANDLE_REGISTER_IMPL(type) \
     void ResourceTracker::register_##type(type obj) { \
         mImpl->register_##type(obj); \
diff --git a/system/vulkan_enc/ResourceTracker.h b/system/vulkan_enc/ResourceTracker.h
index c63dfc0..7cc1cd7 100644
--- a/system/vulkan_enc/ResourceTracker.h
+++ b/system/vulkan_enc/ResourceTracker.h
@@ -24,11 +24,39 @@
 
 namespace goldfish_vk {
 
+struct TeardownFuncs {
+    PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0;
+    PFN_vkDestroyInstance vkDestroyInstance = 0;
+    PFN_vkDestroyDevice vkDestroyDevice = 0;
+    PFN_vkDestroySemaphore vkDestroySemaphore = 0;
+    PFN_vkDestroyFence vkDestroyFence = 0;
+    PFN_vkFreeMemory vkFreeMemory = 0;
+    PFN_vkDestroyBuffer vkDestroyBuffer = 0;
+    PFN_vkDestroyImage vkDestroyImage = 0;
+    PFN_vkDestroyEvent vkDestroyEvent = 0;
+    PFN_vkDestroyQueryPool vkDestroyQueryPool = 0;
+    PFN_vkDestroyBufferView vkDestroyBufferView = 0;
+    PFN_vkDestroyImageView vkDestroyImageView = 0;
+    PFN_vkDestroyShaderModule vkDestroyShaderModule = 0;
+    PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0;
+    PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0;
+    PFN_vkDestroyRenderPass vkDestroyRenderPass = 0;
+    PFN_vkDestroyPipeline vkDestroyPipeline = 0;
+    PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0;
+    PFN_vkDestroySampler vkDestroySampler = 0;
+    PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0;
+    PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0;
+    PFN_vkDestroyCommandPool vkDestroyCommandPool = 0;
+};
+
 class ResourceTracker {
 public:
     ResourceTracker();
     virtual ~ResourceTracker();
     static ResourceTracker* get();
+    void teardown(
+        void* context,
+        const TeardownFuncs& teardownFuncs);
     VulkanHandleMapping* createMapping();
     VulkanHandleMapping* unwrapMapping();
     VulkanHandleMapping* destroyMapping();
