diff options
| author | Tobin Ehlis <tobine@google.com> | 2016-04-18 15:40:59 -0600 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-04-19 09:29:21 -0600 |
| commit | cc0a78af0cf440da0d58d60870377ae3c66924bc (patch) | |
| tree | 4c0adb0d4e8d415124c351dff2149c84799fe00d | |
| parent | d9eb3a89404fe6ca75ce42d450961adb7d434350 (diff) | |
| download | usermoji-cc0a78af0cf440da0d58d60870377ae3c66924bc.tar.xz | |
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.
| -rw-r--r-- | layers/object_tracker.h | 4 | ||||
| -rwxr-xr-x | 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<VkCommandBuffer>((*del_itr).first), - reinterpret_cast<VkCommandBuffer>((*del_itr).first)); + free_command_buffer(device, commandPool, reinterpret_cast<VkCommandBuffer>((*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();') |
