bug 14362: VK_NULL_HANDLE does not work in C (WIP)

Drop type safety on 32-bit.

https://cvs.khronos.org/bugzilla/show_bug.cgi?id=14362
diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp
index 38d8e94..0fcac4e 100644
--- a/layers/swapchain.cpp
+++ b/layers/swapchain.cpp
@@ -53,7 +53,7 @@
 static std::unordered_map<void *, SwpInstance>       instanceMap;
 static std::unordered_map<void *, SwpPhysicalDevice> physicalDeviceMap;
 static std::unordered_map<void *, SwpDevice>         deviceMap;
-static std::unordered_map<uint64_t, SwpSwapchain>    swapchainMap;
+static std::unordered_map<VkSwapchainKHR, SwpSwapchain>    swapchainMap;
 
 
 static void createDeviceRegisterExtensions(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice device)
@@ -830,11 +830,11 @@
             // Remember the swapchain's handle, and link it to the device:
             SwpDevice *pDevice = &deviceMap[device];
 
-            swapchainMap[pSwapchain->handle].swapchain = *pSwapchain;
-            pDevice->swapchains[pSwapchain->handle] =
-                &swapchainMap[pSwapchain->handle];
-            swapchainMap[pSwapchain->handle].pDevice = pDevice;
-            swapchainMap[pSwapchain->handle].imageCount = 0;
+            swapchainMap[*pSwapchain].swapchain = *pSwapchain;
+            pDevice->swapchains[*pSwapchain] =
+                &swapchainMap[*pSwapchain];
+            swapchainMap[*pSwapchain].pDevice = pDevice;
+            swapchainMap[*pSwapchain].imageCount = 0;
         }
 
         return result;
@@ -864,11 +864,11 @@
     }
 
     // Regardless of skipCall value, do some internal cleanup:
-    SwpSwapchain *pSwapchain = &swapchainMap[swapchain.handle];
+    SwpSwapchain *pSwapchain = &swapchainMap[swapchain];
     if (pSwapchain) {
         // Delete the SwpSwapchain associated with this swapchain:
         if (pSwapchain->pDevice) {
-            pSwapchain->pDevice->swapchains.erase(swapchain.handle);
+            pSwapchain->pDevice->swapchains.erase(swapchain);
             if (device != pSwapchain->pDevice->device) {
                 LOG_ERROR(VK_OBJECT_TYPE_DEVICE, device, "VkDevice",
                           SWAPCHAIN_DESTROY_SWAP_DIFF_DEVICE,
@@ -880,10 +880,10 @@
         if (pSwapchain->imageCount) {
             pSwapchain->images.clear();
         }
-        swapchainMap.erase(swapchain.handle);
+        swapchainMap.erase(swapchain);
     } else {
         skipCall |= LOG_ERROR_NON_VALID_OBJ(VK_OBJECT_TYPE_SWAPCHAIN_KHR,
-                                            swapchain.handle,
+                                            swapchain,
                                             "VkSwapchainKHR");
     }
 
@@ -916,7 +916,7 @@
                               "extension was not enabled for this VkDevice.",
                               __FUNCTION__);
     }
-    SwpSwapchain *pSwapchain = &swapchainMap[swapchain.handle];
+    SwpSwapchain *pSwapchain = &swapchainMap[swapchain];
     if (!pSwapchain) {
         skipCall |= LOG_ERROR_NON_VALID_OBJ(VK_OBJECT_TYPE_SWAPCHAIN_KHR,
                                             swapchain.handle,
@@ -973,10 +973,10 @@
                               __FUNCTION__);
     }
     // Validate that a valid VkSwapchainKHR was used:
-    SwpSwapchain *pSwapchain = &swapchainMap[swapchain.handle];
+    SwpSwapchain *pSwapchain = &swapchainMap[swapchain];
     if (!pSwapchain) {
         skipCall |= LOG_ERROR_NON_VALID_OBJ(VK_OBJECT_TYPE_SWAPCHAIN_KHR,
-                                            swapchain.handle,
+                                            swapchain,
                                             "VkSwapchainKHR");
     } else {
         // Look to see if the application is trying to own too many images at
@@ -1037,7 +1037,7 @@
     for (uint32_t i = 0; i < pPresentInfo->swapchainCount ; i++) {
         uint32_t index = pPresentInfo->imageIndices[i];
         SwpSwapchain *pSwapchain =
-            &swapchainMap[pPresentInfo->swapchains[i].handle];
+            &swapchainMap[pPresentInfo->swapchains[i]];
         if (pSwapchain) {
             if (!pSwapchain->pDevice->deviceSwapchainExtensionEnabled) {
                 skipCall |= LOG_ERROR(VK_OBJECT_TYPE_DEVICE,
@@ -1051,7 +1051,7 @@
             }
             if (index >= pSwapchain->imageCount) {
                 skipCall |= LOG_ERROR(VK_OBJECT_TYPE_SWAPCHAIN_KHR,
-                                      pPresentInfo->swapchains[i].handle,
+                                      pPresentInfo->swapchains[i],
                                       "VkSwapchainKHR",
                                       SWAPCHAIN_INDEX_TOO_LARGE,
                                       "%s() called for an index that is too "
@@ -1062,7 +1062,7 @@
             } else {
                 if (!pSwapchain->images[index].ownedByApp) {
                     skipCall |= LOG_ERROR(VK_OBJECT_TYPE_SWAPCHAIN_KHR,
-                                          pPresentInfo->swapchains[i].handle,
+                                          pPresentInfo->swapchains[i],
                                           "VkSwapchainKHR",
                                           SWAPCHAIN_INDEX_NOT_IN_USE,
                                           "%s() returned an index (i.e. %d) "
@@ -1073,7 +1073,7 @@
             }
         } else {
             skipCall |= LOG_ERROR_NON_VALID_OBJ(VK_OBJECT_TYPE_SWAPCHAIN_KHR,
-                                                pPresentInfo->swapchains[i].handle,
+                                                pPresentInfo->swapchains[i],
                                                 "VkSwapchainKHR");
         }
     }
@@ -1087,7 +1087,7 @@
             for (uint32_t i = 0; i < pPresentInfo->swapchainCount ; i++) {
                 int index = pPresentInfo->imageIndices[i];
                 SwpSwapchain *pSwapchain =
-                    &swapchainMap[pPresentInfo->swapchains[i].handle];
+                    &swapchainMap[pPresentInfo->swapchains[i]];
                 if (pSwapchain) {
                     // Change the state of the image (no longer owned by the
                     // application):