mem_tracker: Use device object for dispatch tables

Need to use the device object to lookup the right dispatch
table now that WSI objects are non-dispatchable.
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index 1ae5bde..32f7712 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -2884,7 +2884,9 @@
 
     if (VK_SUCCESS == result) {
         loader_platform_thread_lock_mutex(&globalLock);
-        swapChainMap[pSwapChain->handle]->createInfo = *pCreateInfo;
+        MT_SWAP_CHAIN_INFO *new_rec = new MT_SWAP_CHAIN_INFO;
+        new_rec->createInfo = *pCreateInfo;
+        swapChainMap[pSwapChain->handle]= new_rec;
         loader_platform_thread_unlock_mutex(&globalLock);
     }
 
@@ -2901,7 +2903,7 @@
 
         if (pInfo->images.size() > 0) {
             for (auto it = pInfo->images.begin(); it != pInfo->images.end(); it++) {
-                clear_object_binding((void*) swapChain.handle, it->image.handle, VK_OBJECT_TYPE_SWAP_CHAIN_WSI);
+                clear_object_binding(device, it->image.handle, VK_OBJECT_TYPE_SWAP_CHAIN_WSI);
                 auto image_item = imageMap.find(it->image.handle);
                 if (image_item != imageMap.end())
                     imageMap.erase(image_item);
@@ -2911,7 +2913,7 @@
         swapChainMap.erase(swapChain.handle);
     }
     loader_platform_thread_unlock_mutex(&globalLock);
-    return get_dispatch_table(mem_tracker_device_table_map, (void*) swapChain.handle)->DestroySwapChainWSI(device, swapChain);
+    return get_dispatch_table(mem_tracker_device_table_map, device)->DestroySwapChainWSI(device, swapChain);
 }
 
 VK_LAYER_EXPORT VkResult VKAPI vkGetSwapChainInfoWSI(
@@ -2921,7 +2923,7 @@
     size_t                 *pDataSize,
     void                   *pData)
 {
-    VkResult result = get_dispatch_table(mem_tracker_device_table_map, (void*) swapChain.handle)->GetSwapChainInfoWSI(device, swapChain, infoType, pDataSize, pData);
+    VkResult result = get_dispatch_table(mem_tracker_device_table_map, device)->GetSwapChainInfoWSI(device, swapChain, infoType, pDataSize, pData);
 
     if (infoType == VK_SWAP_CHAIN_INFO_TYPE_IMAGES_WSI && result == VK_SUCCESS && pData != NULL) {
         const size_t count = *pDataSize / sizeof(VkSwapChainImagePropertiesWSI);
@@ -2946,7 +2948,7 @@
 
             if (mismatch) {
                 // TODO : Want swapChain to be srcObj here
-                log_msg(mdd((void*) swapChain.handle), VK_DBG_REPORT_WARN_BIT, VK_OBJECT_TYPE_SWAP_CHAIN_WSI, 0, 0, MEMTRACK_NONE, "SWAP_CHAIN",
+                log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, VK_OBJECT_TYPE_SWAP_CHAIN_WSI, 0, 0, MEMTRACK_NONE, "SWAP_CHAIN",
                         "vkGetSwapChainInfoWSI(%p, VK_SWAP_CHAIN_INFO_TYPE_PERSISTENT_IMAGES_WSI) returned mismatching data", swapChain);
             }
         }