From 20c48fd7008404563d2f2e2897e78ce18fa49dfe Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Fri, 16 Feb 2018 09:58:07 -0700 Subject: layers: Move U_O:DestroySwapchain out of codegen This function in the unique_objects layer will need to clean up some swapchain image index tracking information and so will now be manually written. Change-Id: I306fdd9f7a3c75c21b82fe21951804bd86259781 --- layers/unique_objects.cpp | 10 ++++++++++ scripts/unique_objects_generator.py | 1 + 2 files changed, 11 insertions(+) diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp index 18786f4c..13971260 100644 --- a/layers/unique_objects.cpp +++ b/layers/unique_objects.cpp @@ -507,6 +507,16 @@ VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainImagesKHR(VkDevice device, VkSwapchai return result; } +VKAPI_ATTR void VKAPI_CALL DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks *pAllocator) { + layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + std::unique_lock lock(global_lock); + uint64_t swapchain_id = reinterpret_cast(swapchain); + swapchain = (VkSwapchainKHR)dev_data->unique_id_mapping[swapchain_id]; + dev_data->unique_id_mapping.erase(swapchain_id); + lock.unlock(); + dev_data->dispatch_table.DestroySwapchainKHR(device, swapchain, pAllocator); +} + VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR(VkQueue queue, const VkPresentInfoKHR *pPresentInfo) { layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); safe_VkPresentInfoKHR *local_pPresentInfo = NULL; diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py index 833207ea..fe7cc9c7 100644 --- a/scripts/unique_objects_generator.py +++ b/scripts/unique_objects_generator.py @@ -137,6 +137,7 @@ class UniqueObjectsOutputGenerator(OutputGenerator): 'vkCreateSwapchainKHR', 'vkCreateSharedSwapchainsKHR', 'vkGetSwapchainImagesKHR', + 'vkDestroySwapchainKHR', 'vkQueuePresentKHR', 'vkEnumerateInstanceLayerProperties', 'vkEnumerateDeviceLayerProperties', -- cgit v1.2.3