From 6c1bb942c25e610e03e9ab7f8685ff929c9dc92f Mon Sep 17 00:00:00 2001 From: nyorain Date: Fri, 21 Jan 2022 15:47:40 +0100 Subject: Fix FreeCommandBuffers leak --- icd/generated/mock_icd.cpp | 5 ++++- scripts/mock_icd_generator.py | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/icd/generated/mock_icd.cpp b/icd/generated/mock_icd.cpp index 5b1c03f4..bf876e12 100644 --- a/icd/generated/mock_icd.cpp +++ b/icd/generated/mock_icd.cpp @@ -1251,7 +1251,10 @@ static VKAPI_ATTR void VKAPI_CALL FreeCommandBuffers( uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) { -//Destroy object + + for (auto i = 0u; i < commandBufferCount; ++i) + if (pCommandBuffers[i]) + DestroyDispObjHandle((void*) pCommandBuffers[i]); } static VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer( diff --git a/scripts/mock_icd_generator.py b/scripts/mock_icd_generator.py index a2360b5f..310e81e9 100644 --- a/scripts/mock_icd_generator.py +++ b/scripts/mock_icd_generator.py @@ -444,6 +444,11 @@ CUSTOM_C_INTERCEPTS = { DestroyDispObjHandle((void*)instance); } ''', +'vkFreeCommandBuffers': ''' + for (auto i = 0u; i < commandBufferCount; ++i) + if (pCommandBuffers[i]) + DestroyDispObjHandle((void*) pCommandBuffers[i]); +''', 'vkEnumeratePhysicalDevices': ''' VkResult result_code = VK_SUCCESS; if (pPhysicalDevices) { @@ -1360,6 +1365,7 @@ class MockICDOutputGenerator(OutputGenerator): 'vkDestroyDevice', 'vkCreateInstance', 'vkDestroyInstance', + 'vkFreeCommandBuffers', #'vkCreateDebugReportCallbackEXT', #'vkDestroyDebugReportCallbackEXT', 'vkEnumerateInstanceLayerProperties', -- cgit v1.2.3