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"))