diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2018-02-16 09:58:07 -0700 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2018-02-19 12:01:16 -0700 |
| commit | 20c48fd7008404563d2f2e2897e78ce18fa49dfe (patch) | |
| tree | 42f58e16085951cb83961e0ef68a3850712fc8ae | |
| parent | d016ddd3e9ffef855b11f148aff9638d65a0f421 (diff) | |
| download | usermoji-20c48fd7008404563d2f2e2897e78ce18fa49dfe.tar.xz | |
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
| -rw-r--r-- | layers/unique_objects.cpp | 10 | ||||
| -rw-r--r-- | scripts/unique_objects_generator.py | 1 |
2 files changed, 11 insertions, 0 deletions
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<std::mutex> lock(global_lock); + uint64_t swapchain_id = reinterpret_cast<uint64_t &>(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', |
