diff --git a/system/vulkan/goldfish_vulkan.cpp b/system/vulkan/goldfish_vulkan.cpp
index d0978d2..4e80c45 100644
--- a/system/vulkan/goldfish_vulkan.cpp
+++ b/system/vulkan/goldfish_vulkan.cpp
@@ -143,6 +143,11 @@
     },
 };
 
+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) { \
@@ -162,50 +167,6 @@
     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 31b4e6d..3cacf39 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -199,23 +199,6 @@
         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);
@@ -1124,12 +1107,6 @@
     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 7cc1cd7..c63dfc0 100644
--- a/system/vulkan_enc/ResourceTracker.h
+++ b/system/vulkan_enc/ResourceTracker.h
@@ -24,39 +24,11 @@
 
 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();
