From cc0a78af0cf440da0d58d60870377ae3c66924bc Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Mon, 18 Apr 2016 15:40:59 -0600 Subject: layers: Fix object_tracker bugs A couple of bugs in object_tracker hand-coded sections that MarkY tracked down. In DestroyInstance case we were attempting to delete wrong map key. Then, for vkDestroyCommandPool we were using wrong function to clean-up the command buffers in that pool which would result in occassional crashes. --- layers/object_tracker.h | 4 +--- vk-layer-generate.py | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/layers/object_tracker.h b/layers/object_tracker.h index 2e61a155..b2cda909 100644 --- a/layers/object_tracker.h +++ b/layers/object_tracker.h @@ -367,7 +367,6 @@ static VkBool32 validate_pipeline_layout(VkDevice dispatchable_object, VkPipelin static VkBool32 validate_pipeline(VkDevice dispatchable_object, VkPipeline object, VkDebugReportObjectTypeEXT objType, bool null_allowed); static void destroy_command_pool(VkDevice dispatchable_object, VkCommandPool object); -static void destroy_command_buffer(VkCommandBuffer dispatchable_object, VkCommandBuffer object); static void destroy_descriptor_pool(VkDevice dispatchable_object, VkDescriptorPool object); static void destroy_descriptor_set(VkDevice dispatchable_object, VkDescriptorSet object); static void destroy_device_memory(VkDevice dispatchable_object, VkDeviceMemory object); @@ -924,8 +923,7 @@ void explicit_DestroyCommandPool(VkDevice device, VkCommandPool commandPool, con OBJTRACK_NODE *pNode = (*itr).second; del_itr = itr++; if (pNode->parentObj == (uint64_t)(commandPool)) { - destroy_command_buffer(reinterpret_cast((*del_itr).first), - reinterpret_cast((*del_itr).first)); + free_command_buffer(device, commandPool, reinterpret_cast((*del_itr).first)); } } destroy_command_pool(device, commandPool); diff --git a/vk-layer-generate.py b/vk-layer-generate.py index 16654e10..3af04f14 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -1007,7 +1007,7 @@ class ObjectTrackerSubcommand(Subcommand): gedi_txt.append(' }') gedi_txt.append('') gedi_txt.append(' layer_debug_report_destroy_instance(mid(instance));') - gedi_txt.append(' layer_data_map.erase(pInstanceTable);') + gedi_txt.append(' layer_data_map.erase(key);') gedi_txt.append('') gedi_txt.append(' instanceExtMap.erase(pInstanceTable);') gedi_txt.append(' lock.unlock();') -- cgit v1.2.3