diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2017-02-28 15:09:31 -0700 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2017-02-28 15:09:31 -0700 |
| commit | 9172c7bf11a3dbb663e170f57692e68891e891c9 (patch) | |
| tree | 471e11df7403b7d1fcf52da4c2ced4788920b6e1 | |
| parent | bba73cd799889bb48a2b6f6f750a5005cc5ac068 (diff) | |
| download | usermoji-9172c7bf11a3dbb663e170f57692e68891e891c9.tar.xz | |
layers: Special-case threading GetSwapchainImages
This API is a special-case for the code-gen in that it sometimes
returns an array of images. These do not need to be counted by
start/finishReadObject and so were moved into the non-generated
part of the layer source.
Change-Id: Iaaab9143abadbf025b5f3c118aa26dae3c6f1bec
| -rw-r--r-- | layers/threading.cpp | 21 | ||||
| -rw-r--r-- | scripts/threading_generator.py | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/layers/threading.cpp b/layers/threading.cpp index 0c46ef03..5984c4c8 100644 --- a/layers/threading.cpp +++ b/layers/threading.cpp @@ -171,6 +171,27 @@ VKAPI_ATTR void VKAPI_CALL DestroyDevice(VkDevice device, const VkAllocationCall layer_data_map.erase(key); } +VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t *pSwapchainImageCount, + VkImage *pSwapchainImages) { + dispatch_key key = get_dispatch_key(device); + layer_data *my_data = GetLayerDataPtr(key, layer_data_map); + VkLayerDispatchTable *pTable = my_data->device_dispatch_table; + VkResult result; + bool threadChecks = startMultiThread(); + if (threadChecks) { + startReadObject(my_data, device); + startReadObject(my_data, swapchain); + } + result = pTable->GetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages); + if (threadChecks) { + finishReadObject(my_data, device); + finishReadObject(my_data, swapchain); + } else { + finishMultiThread(); + } + return result; +} + static const VkExtensionProperties threading_extensions[] = { {VK_EXT_DEBUG_REPORT_EXTENSION_NAME, VK_EXT_DEBUG_REPORT_SPEC_VERSION}}; diff --git a/scripts/threading_generator.py b/scripts/threading_generator.py index fc9174bf..97d7df00 100644 --- a/scripts/threading_generator.py +++ b/scripts/threading_generator.py @@ -383,6 +383,7 @@ class ThreadOutputGenerator(OutputGenerator): 'vkCreateDebugReportCallbackEXT', 'vkDestroyDebugReportCallbackEXT', 'vkAllocateDescriptorSets', + 'vkGetSwapchainImagesKHR', ] if name in special_functions: decls = self.makeCDecls(cmdinfo.elem) |
