aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2018-02-16 09:58:07 -0700
committerMark Lobodzinski <mark@lunarg.com>2018-02-19 12:01:16 -0700
commit20c48fd7008404563d2f2e2897e78ce18fa49dfe (patch)
tree42f58e16085951cb83961e0ef68a3850712fc8ae
parentd016ddd3e9ffef855b11f148aff9638d65a0f421 (diff)
downloadusermoji-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.cpp10
-rw-r--r--scripts/unique_objects_generator.py1
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',