From 27e4fe97725b6f87d45d4bfb00e416432e0e8453 Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Tue, 23 Feb 2016 14:11:46 -0700 Subject: layers: Fix memory leak in mem_tracker Certain codepaths could result in the validation_functions vector growing unbounded, causing performance hits in QueueSubmit. --- layers/mem_tracker.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index 72a87035..8f5d653a 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -573,16 +573,18 @@ clear_cmd_buf_and_mem_references( VkBool32 skipCall = VK_FALSE; MT_CB_INFO* pCBInfo = get_cmd_buf_info(my_data, cb); - if (pCBInfo && (pCBInfo->pMemObjList.size() > 0)) { - list mem_obj_list = pCBInfo->pMemObjList; - for (list::iterator it=mem_obj_list.begin(); it!=mem_obj_list.end(); ++it) { - MT_MEM_OBJ_INFO* pInfo = get_mem_obj_info(my_data, *it); - if (pInfo) { - pInfo->pCommandBufferBindings.remove(cb); - pInfo->refCount--; + if (pCBInfo) { + if (pCBInfo->pMemObjList.size() > 0) { + list mem_obj_list = pCBInfo->pMemObjList; + for (list::iterator it=mem_obj_list.begin(); it!=mem_obj_list.end(); ++it) { + MT_MEM_OBJ_INFO* pInfo = get_mem_obj_info(my_data, *it); + if (pInfo) { + pInfo->pCommandBufferBindings.remove(cb); + pInfo->refCount--; + } } + pCBInfo->pMemObjList.clear(); } - pCBInfo->pMemObjList.clear(); pCBInfo->activeDescriptorSets.clear(); pCBInfo->validate_functions.clear(); } -- cgit v1.2.3