layers: MR82, merge-related fixes
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 8cc5ff0..3245813 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -108,9 +108,9 @@
     unordered_map<VkDescriptorSetLayout, LAYOUT_NODE*>                       descriptorSetLayoutMap;
     unordered_map<VkPipelineLayout,      PIPELINE_LAYOUT_NODE>               pipelineLayoutMap;
     unordered_map<VkDeviceMemory,        VkImage>                            memImageMap;
-    unordered_map<VkFence,               FENCE_NODE>                         fenceMap; 
-    unordered_map<VkQueue,               QUEUE_NODE>                         queueMap; 
-    unordered_map<VkDevice,              DEVICE_NODE>                        deviceMap; 
+    unordered_map<VkFence,               FENCE_NODE>                         fenceMap;
+    unordered_map<VkQueue,               QUEUE_NODE>                         queueMap;
+    unordered_map<VkDevice,              DEVICE_NODE>                        deviceMap;
     // Map for layout chains
     unordered_map<void*,                 GLOBAL_CB_NODE*>                    commandBufferMap;
     unordered_map<VkFramebuffer,         VkFramebufferCreateInfo*>           frameBufferMap;
@@ -1024,7 +1024,6 @@
 //   to that same cmd buffer by separate thread are not changing state from underneath us
 // Track the last cmd buffer touched by this thread
 
-#define MAX_BINDING 0xFFFFFFFF // Default vtxBinding value in CB Node to identify if no vtxBinding set
 // prototype
 static GLOBAL_CB_NODE* getCBNode(layer_data*, const VkCommandBuffer);
 
@@ -2818,7 +2817,7 @@
     pDisp->DestroySwapchainKHR       = (PFN_vkDestroySwapchainKHR) gpa(device, "vkDestroySwapchainKHR");
     pDisp->GetSwapchainImagesKHR     = (PFN_vkGetSwapchainImagesKHR) gpa(device, "vkGetSwapchainImagesKHR");
     pDisp->AcquireNextImageKHR       = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR");
-    pDisp->QueuePresentKHR           = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR");    
+    pDisp->QueuePresentKHR           = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR");
 
     for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) {
         if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) {
@@ -3013,13 +3012,14 @@
         }
     }
 }
- 
+
 void decrementResources(layer_data* my_data, VkQueue queue) {
     auto queue_data = my_data->queueMap.find(queue);
     if (queue_data != my_data->queueMap.end()) {
         for (auto cmdBuffer : queue_data->second.untrackedCmdBuffers) {
             decrementResources(my_data, cmdBuffer);
         }
+        queue_data->second.untrackedCmdBuffers.clear();
         decrementResources(my_data, 1, &queue_data->second.priorFence);
     }
 }
@@ -4229,13 +4229,13 @@
         dev_data->device_dispatch_table->CmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
 }
 
-void updateResourceTracking(GLOBAL_CB_NODE* pCB, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers) {
-    uint32_t end = startBinding + bindingCount;
+void updateResourceTracking(GLOBAL_CB_NODE* pCB, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers) {
+    uint32_t end = firstBinding + bindingCount;
     if (pCB->currentDrawData.buffers.size() < end) {
         pCB->currentDrawData.buffers.resize(end);
     }
     for (uint32_t i = 0; i < bindingCount; ++i) {
-        pCB->currentDrawData.buffers[i + startBinding] = pBuffers[i];
+        pCB->currentDrawData.buffers[i + firstBinding] = pBuffers[i];
     }
 }
 
@@ -4255,8 +4255,8 @@
     GLOBAL_CB_NODE* pCB = getCBNode(dev_data, commandBuffer);
     if (pCB) {
         addCmd(dev_data, pCB, CMD_BINDVERTEXBUFFER, "vkCmdBindVertexBuffer()");
-        pCB->lastVtxBinding = startBinding + bindingCount -1;
-        updateResourceTracking(pCB, startBinding, bindingCount, pBuffers);
+        pCB->lastVtxBinding = firstBinding + bindingCount - 1;
+        updateResourceTracking(pCB, firstBinding, bindingCount, pBuffers);
     } else {
             skipCall |= report_error_no_cb_begin(dev_data, commandBuffer, "vkCmdBindVertexBuffer()");
     }
@@ -5776,6 +5776,10 @@
         return (PFN_vkVoidFunction) vkWaitForFences;
     if (!strcmp(funcName, "vkGetFenceStatus"))
         return (PFN_vkVoidFunction) vkGetFenceStatus;
+    if (!strcmp(funcName, "vkQueueWaitIdle"))
+        return (PFN_vkVoidFunction) vkQueueWaitIdle;
+    if (!strcmp(funcName, "vkDeviceWaitIdle"))
+        return (PFN_vkVoidFunction) vkDeviceWaitIdle;
     if (!strcmp(funcName, "vkGetDeviceQueue"))
         return (PFN_vkVoidFunction) vkGetDeviceQueue;
     if (!strcmp(funcName, "vkDestroyInstance"))