layers: Move U_O:DestroySwapchain out of codegen

This function in the unique_objects layer will need to clean up some
swapchain image index tracking information and so will now be
manually written.

Change-Id: I306fdd9f7a3c75c21b82fe21951804bd86259781
diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp
index 18786f4..1397126 100644
--- a/layers/unique_objects.cpp
+++ b/layers/unique_objects.cpp
@@ -507,6 +507,16 @@
     return result;
 }
 
+VKAPI_ATTR void VKAPI_CALL DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks *pAllocator) {
+    layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+    std::unique_lock<std::mutex> lock(global_lock);
+    uint64_t swapchain_id = reinterpret_cast<uint64_t &>(swapchain);
+    swapchain = (VkSwapchainKHR)dev_data->unique_id_mapping[swapchain_id];
+    dev_data->unique_id_mapping.erase(swapchain_id);
+    lock.unlock();
+    dev_data->dispatch_table.DestroySwapchainKHR(device, swapchain, pAllocator);
+}
+
 VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR(VkQueue queue, const VkPresentInfoKHR *pPresentInfo) {
     layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
     safe_VkPresentInfoKHR *local_pPresentInfo = NULL;