diff options
| author | Mark Young <marky@lunarg.com> | 2017-11-09 10:37:04 -0700 |
|---|---|---|
| committer | Mike Schuchardt <mikes@lunarg.com> | 2018-03-09 13:54:31 -0700 |
| commit | 4df1d6e03c91637d89d70339674deaece0d7641e (patch) | |
| tree | 274058c2d30cad6b10da6fe6e994da3f22521750 /scripts | |
| parent | 9a6be7a671252c15a6b632568cc3f05631f8ef6f (diff) | |
| download | usermoji-4df1d6e03c91637d89d70339674deaece0d7641e.tar.xz | |
Implement initial VK_EXT_debug_utils changes
This affects the loader, scripts, and layers and introduces the
changes to support the VK_EXT_debug_utils extension.
Change-Id: Ia5336f63e85b00f1e59416c06aacd4ae331fd692
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/helper_file_generator.py | 48 | ||||
| -rw-r--r-- | scripts/loader_extension_generator.py | 109 | ||||
| -rw-r--r-- | scripts/object_tracker_generator.py | 11 | ||||
| -rw-r--r-- | scripts/parameter_validation_generator.py | 11 | ||||
| -rw-r--r-- | scripts/threading_generator.py | 4 | ||||
| -rw-r--r-- | scripts/unique_objects_generator.py | 8 | ||||
| -rw-r--r-- | scripts/vuid_mapping.py | 2 |
7 files changed, 162 insertions, 31 deletions
diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py index fb519b67..e460f964 100644 --- a/scripts/helper_file_generator.py +++ b/scripts/helper_file_generator.py @@ -747,7 +747,8 @@ class HelperFileOutputGenerator(OutputGenerator): # # Object types header: create object enum type header file def GenerateObjectTypesHeader(self): - object_types_header = '// Object Type enum for validation layer internal object handling\n' + object_types_header = '' + object_types_header += '// Object Type enum for validation layer internal object handling\n' object_types_header += 'typedef enum VulkanObjectType {\n' object_types_header += ' kVulkanObjectTypeUnknown = 0,\n' enum_num = 1 @@ -777,7 +778,7 @@ class HelperFileOutputGenerator(OutputGenerator): object_types_header += '\n' object_types_header += '// Helper array to get Vulkan VK_EXT_debug_report object type enum from the internal layers version\n' object_types_header += 'const VkDebugReportObjectTypeEXT get_debug_report_enum[] = {\n' - object_types_header += ' VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // No Match\n' + object_types_header += ' VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeUnknown\n' for object_type in type_list: search_type = object_type.replace("kVulkanObjectType", "").lower() for vk_object_type in self.debug_report_object_types: @@ -793,7 +794,7 @@ class HelperFileOutputGenerator(OutputGenerator): object_types_header += '\n' object_types_header += '// Helper array to get Official Vulkan VkObjectType enum from the internal layers version\n' object_types_header += 'const VkObjectType get_object_type_enum[] = {\n' - object_types_header += ' VK_OBJECT_TYPE_UNKNOWN, // No Match\n' + object_types_header += ' VK_OBJECT_TYPE_UNKNOWN, // kVulkanObjectTypeUnknown\n' for object_type in type_list: search_type = object_type.replace("kVulkanObjectType", "").lower() for vk_object_type in self.core_object_types: @@ -804,6 +805,47 @@ class HelperFileOutputGenerator(OutputGenerator): break object_types_header += '};\n' + # Create a function to convert from VkDebugReportObjectTypeEXT to VkObjectType + object_types_header += '\n' + object_types_header += '// Helper function to convert from VkDebugReportObjectTypeEXT to VkObjectType\n' + object_types_header += 'static VkObjectType convertDebugReportObjectToCoreObject(VkDebugReportObjectTypeEXT debug_report_obj){\n' + object_types_header += ' if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT) {\n' + object_types_header += ' return VK_OBJECT_TYPE_UNKNOWN;\n' + for core_object_type in self.core_object_types: + core_target_type = core_object_type.replace("VK_OBJECT_TYPE_", "").lower() + core_target_type = core_target_type.replace("_", "") + for dr_object_type in self.debug_report_object_types: + dr_target_type = dr_object_type.replace("VK_DEBUG_REPORT_OBJECT_TYPE_", "").lower() + dr_target_type = dr_target_type[:-4] + dr_target_type = dr_target_type.replace("_", "") + if core_target_type == dr_target_type: + object_types_header += ' } else if (debug_report_obj == %s) {\n' % dr_object_type + object_types_header += ' return %s;\n' % core_object_type + break + object_types_header += ' }\n' + object_types_header += ' return VK_OBJECT_TYPE_UNKNOWN;\n' + object_types_header += '}\n' + + # Create a function to convert from VkObjectType to VkDebugReportObjectTypeEXT + object_types_header += '\n' + object_types_header += '// Helper function to convert from VkDebugReportObjectTypeEXT to VkObjectType\n' + object_types_header += 'static VkDebugReportObjectTypeEXT convertCoreObjectToDebugReportObject(VkObjectType core_report_obj){\n' + object_types_header += ' if (core_report_obj == VK_OBJECT_TYPE_UNKNOWN) {\n' + object_types_header += ' return VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;\n' + for core_object_type in self.core_object_types: + core_target_type = core_object_type.replace("VK_OBJECT_TYPE_", "").lower() + core_target_type = core_target_type.replace("_", "") + for dr_object_type in self.debug_report_object_types: + dr_target_type = dr_object_type.replace("VK_DEBUG_REPORT_OBJECT_TYPE_", "").lower() + dr_target_type = dr_target_type[:-4] + dr_target_type = dr_target_type.replace("_", "") + if core_target_type == dr_target_type: + object_types_header += ' } else if (core_report_obj == %s) {\n' % core_object_type + object_types_header += ' return %s;\n' % dr_object_type + break + object_types_header += ' }\n' + object_types_header += ' return VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;\n' + object_types_header += '}\n' return object_types_header # # Determine if a structure needs a safe_struct helper function diff --git a/scripts/loader_extension_generator.py b/scripts/loader_extension_generator.py index a4a3f8fb..ae2b3dac 100644 --- a/scripts/loader_extension_generator.py +++ b/scripts/loader_extension_generator.py @@ -40,14 +40,25 @@ WSI_EXT_NAMES = ['VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_display_swapchain'] +ADD_INST_CMDS = ['vkCreateInstance', + 'vkEnumerateInstanceExtensionProperties', + 'vkEnumerateInstanceLayerProperties', + 'vkEnumerateInstanceVersion'] + AVOID_EXT_NAMES = ['VK_EXT_debug_report'] +AVOID_CMD_NAMES = ['vkCreateDebugUtilsMessengerEXT', + 'vkDestroyDebugUtilsMessengerEXT', + 'vkSubmitDebugUtilsMessageEXT'] + DEVICE_CMDS_NEED_TERM = ['vkGetDeviceProcAddr', 'vkCreateSwapchainKHR', 'vkCreateSharedSwapchainsKHR', 'vkGetDeviceGroupSurfacePresentModesKHR', 'vkDebugMarkerSetObjectTagEXT', - 'vkDebugMarkerSetObjectNameEXT'] + 'vkDebugMarkerSetObjectNameEXT', + 'vkSetDebugUtilsObjectNameEXT', + 'vkSetDebugUtilsObjectTagEXT'] ALIASED_CMDS = { 'vkEnumeratePhysicalDeviceGroupsKHR': 'vkEnumeratePhysicalDeviceGroups', @@ -176,7 +187,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator): preamble += '#include "vk_loader_extensions.h"\n' preamble += '#include <vulkan/vk_icd.h>\n' preamble += '#include "wsi.h"\n' - preamble += '#include "debug_report.h"\n' + preamble += '#include "debug_utils.h"\n' preamble += '#include "extension_manual.h"\n' elif self.genOpts.filename == 'vk_layer_dispatch_table.h': @@ -467,7 +478,9 @@ class LoaderExtensionOutputGenerator(OutputGenerator): commands = self.ext_commands for cur_cmd in commands: - if cur_cmd.handle_type == 'VkInstance' or cur_cmd.handle_type == 'VkPhysicalDevice': + is_inst_handle_type = cur_cmd.name in ADD_INST_CMDS or cur_cmd.handle_type == 'VkInstance' or cur_cmd.handle_type == 'VkPhysicalDevice' + if is_inst_handle_type: + if cur_cmd.ext_name != cur_extension_name: if 'VK_VERSION_' in cur_cmd.ext_name: table += '\n // ---- Core %s commands\n' % cur_cmd.ext_name[11:] @@ -506,7 +519,9 @@ class LoaderExtensionOutputGenerator(OutputGenerator): commands = self.ext_commands for cur_cmd in commands: - if cur_cmd.handle_type != 'VkInstance' and cur_cmd.handle_type != 'VkPhysicalDevice': + is_inst_handle_type = cur_cmd.name in ADD_INST_CMDS or cur_cmd.handle_type == 'VkInstance' or cur_cmd.handle_type == 'VkPhysicalDevice' + if not is_inst_handle_type: + if cur_cmd.ext_name != cur_extension_name: if 'VK_VERSION_' in cur_cmd.ext_name: table += '\n // ---- Core %s commands\n' % cur_cmd.ext_name[11:] @@ -545,7 +560,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator): commands = self.ext_commands for cur_cmd in commands: - is_inst_handle_type = cur_cmd.ext_type == 'instance' or cur_cmd.handle_type == 'VkInstance' or cur_cmd.handle_type == 'VkPhysicalDevice' + is_inst_handle_type = cur_cmd.name in ADD_INST_CMDS or cur_cmd.handle_type == 'VkInstance' or cur_cmd.handle_type == 'VkPhysicalDevice' if ((is_inst_handle_type or cur_cmd.name in DEVICE_CMDS_NEED_TERM) and (cur_cmd.name != 'vkGetInstanceProcAddr' and cur_cmd.name != 'vkEnumerateDeviceLayerProperties')): @@ -607,7 +622,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator): required = False for cur_cmd in commands: - is_inst_handle_type = cur_cmd.ext_type == 'instance' or cur_cmd.handle_type == 'VkInstance' or cur_cmd.handle_type == 'VkPhysicalDevice' + is_inst_handle_type = cur_cmd.handle_type == 'VkInstance' or cur_cmd.handle_type == 'VkPhysicalDevice' if ((is_inst_handle_type or cur_cmd.name in DEVICE_CMDS_NEED_TERM) and (cur_cmd.name not in skip_gipa_commands)): if cur_cmd.ext_name != cur_extension_name: @@ -666,7 +681,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator): terminators += '// Loader core instance terminators\n' for cur_cmd in self.core_commands: - is_inst_handle_type = cur_cmd.ext_type == 'instance' or cur_cmd.handle_type == 'VkInstance' or cur_cmd.handle_type == 'VkPhysicalDevice' + is_inst_handle_type = cur_cmd.name in ADD_INST_CMDS or cur_cmd.handle_type == 'VkInstance' or cur_cmd.handle_type == 'VkPhysicalDevice' if is_inst_handle_type: mod_string = '' new_terminator = cur_cmd.cdecl @@ -878,6 +893,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator): for ext_cmd in self.ext_commands: if (ext_cmd.ext_name in WSI_EXT_NAMES or ext_cmd.ext_name in AVOID_EXT_NAMES or + ext_cmd.name in AVOID_CMD_NAMES or ext_cmd.name in manual_ext_commands): continue @@ -937,8 +953,9 @@ class LoaderExtensionOutputGenerator(OutputGenerator): return_prefix += 'return ' has_return_type = True - if (ext_cmd.ext_type == 'instance' or ext_cmd.handle_type == 'VkPhysicalDevice' or - 'DebugMarkerSetObject' in ext_cmd.name or ext_cmd.name in DEVICE_CMDS_NEED_TERM): + if (ext_cmd.handle_type == 'VkInstance' or ext_cmd.handle_type == 'VkPhysicalDevice' or + 'DebugMarkerSetObject' in ext_cmd.name or 'SetDebugUtilsObject' in ext_cmd.name or + ext_cmd.name in DEVICE_CMDS_NEED_TERM): requires_terminator = 1 if requires_terminator == 1: @@ -973,6 +990,22 @@ class LoaderExtensionOutputGenerator(OutputGenerator): funcs += ' struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pTagInfo->object;\n' funcs += ' local_tag_info.object = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;\n' funcs += ' }\n' + elif 'SetDebugUtilsObjectName' in ext_cmd.name: + funcs += ' VkDebugUtilsObjectNameInfoEXT local_name_info;\n' + funcs += ' memcpy(&local_name_info, pNameInfo, sizeof(VkDebugUtilsObjectNameInfoEXT));\n' + funcs += ' // If this is a physical device, we have to replace it with the proper one for the next call.\n' + funcs += ' if (pNameInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {\n' + funcs += ' struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pNameInfo->objectHandle;\n' + funcs += ' local_name_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;\n' + funcs += ' }\n' + elif 'SetDebugUtilsObjectTag' in ext_cmd.name: + funcs += ' VkDebugUtilsObjectTagInfoEXT local_tag_info;\n' + funcs += ' memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugUtilsObjectTagInfoEXT));\n' + funcs += ' // If this is a physical device, we have to replace it with the proper one for the next call.\n' + funcs += ' if (pTagInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {\n' + funcs += ' struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pTagInfo->objectHandle;\n' + funcs += ' local_tag_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;\n' + funcs += ' }\n' funcs += return_prefix funcs += 'disp->' @@ -985,9 +1018,9 @@ class LoaderExtensionOutputGenerator(OutputGenerator): if param.type == 'VkPhysicalDevice': funcs += 'unwrapped_phys_dev' - elif 'DebugMarkerSetObject' in ext_cmd.name and param.name == 'pNameInfo': + elif ('DebugMarkerSetObject' in ext_cmd.name or 'SetDebugUtilsObject' in ext_cmd.name) and param.name == 'pNameInfo': funcs += '&local_name_info' - elif 'DebugMarkerSetObject' in ext_cmd.name and param.name == 'pTagInfo': + elif ('DebugMarkerSetObject' in ext_cmd.name or 'SetDebugUtilsObject' in ext_cmd.name) and param.name == 'pTagInfo': funcs += '&local_tag_info' else: funcs += param.name @@ -1059,7 +1092,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator): count += 1 funcs += ');\n' - elif has_surface == 1 and ext_cmd.ext_type == 'device': + elif has_surface == 1 and not (ext_cmd.handle_type == 'VkPhysicalDevice' or ext_cmd.handle_type == 'VkInstance'): funcs += ' uint32_t icd_index = 0;\n' funcs += ' struct loader_device *dev;\n' funcs += ' struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);\n' @@ -1096,7 +1129,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator): elif ext_cmd.handle_type == 'VkInstance': funcs += '#error("Not implemented. Likely needs to be manually generated!");\n' - elif 'DebugMarkerSetObject' in ext_cmd.name: + elif 'DebugMarkerSetObject' in ext_cmd.name or 'SetDebugUtilsObject' in ext_cmd.name: funcs += ' uint32_t icd_index = 0;\n' funcs += ' struct loader_device *dev;\n' funcs += ' struct loader_icd_term *icd_term = loader_get_icd_and_device(%s, &dev, &icd_index);\n' % (ext_cmd.params[0].name) @@ -1131,6 +1164,45 @@ class LoaderExtensionOutputGenerator(OutputGenerator): funcs += ' if (NULL != icd_surface->real_icd_surfaces) {\n' funcs += ' local_tag_info.object = (uint64_t)icd_surface->real_icd_surfaces[icd_index];\n' funcs += ' }\n' + elif 'SetDebugUtilsObjectName' in ext_cmd.name: + funcs += ' VkDebugUtilsObjectNameInfoEXT local_name_info;\n' + funcs += ' memcpy(&local_name_info, pNameInfo, sizeof(VkDebugUtilsObjectNameInfoEXT));\n' + funcs += ' // If this is a physical device, we have to replace it with the proper one for the next call.\n' + funcs += ' if (pNameInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {\n' + funcs += ' struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pNameInfo->objectHandle;\n' + funcs += ' local_name_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;\n' + funcs += ' // If this is a KHR_surface, and the ICD has created its own, we have to replace it with the proper one for the next call.\n' + funcs += ' } else if (pNameInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {\n' + funcs += ' if (NULL != icd_term && NULL != icd_term->dispatch.CreateSwapchainKHR) {\n' + funcs += ' VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pNameInfo->objectHandle;\n' + funcs += ' if (NULL != icd_surface->real_icd_surfaces) {\n' + funcs += ' local_name_info.objectHandle = (uint64_t)icd_surface->real_icd_surfaces[icd_index];\n' + funcs += ' }\n' + elif 'SetDebugUtilsObjectTag' in ext_cmd.name: + funcs += ' VkDebugUtilsObjectTagInfoEXT local_tag_info;\n' + funcs += ' memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugUtilsObjectTagInfoEXT));\n' + funcs += ' // If this is a physical device, we have to replace it with the proper one for the next call.\n' + funcs += ' if (pTagInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {\n' + funcs += ' struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pTagInfo->objectHandle;\n' + funcs += ' local_tag_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;\n' + funcs += ' // If this is a KHR_surface, and the ICD has created its own, we have to replace it with the proper one for the next call.\n' + funcs += ' } else if (pTagInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {\n' + funcs += ' if (NULL != icd_term && NULL != icd_term->dispatch.CreateSwapchainKHR) {\n' + funcs += ' VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pTagInfo->objectHandle;\n' + funcs += ' if (NULL != icd_surface->real_icd_surfaces) {\n' + funcs += ' local_tag_info.objectHandle = (uint64_t)icd_surface->real_icd_surfaces[icd_index];\n' + funcs += ' }\n' + else: + funcs += ' if (%s->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {\n' % (ext_cmd.params[1].name) + funcs += ' struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)%s->objectHandle;\n' % (ext_cmd.params[1].name) + funcs += ' %s->objectHandle = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;\n' % (ext_cmd.params[1].name) + funcs += ' // If this is a KHR_surface, and the ICD has created its own, we have to replace it with the proper one for the next call.\n' + funcs += ' } else if (%s->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {\n' % (ext_cmd.params[1].name) + funcs += ' if (NULL != icd_term && NULL != icd_term->dispatch.CreateSwapchainKHR) {\n' + funcs += ' VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)%s->objectHandle;\n' % (ext_cmd.params[1].name) + funcs += ' if (NULL != icd_surface->real_icd_surfaces) {\n' + funcs += ' %s->objectHandle = (uint64_t)icd_surface->real_icd_surfaces[icd_index];\n' % (ext_cmd.params[1].name) + funcs += ' }\n' funcs += ' }\n' funcs += ' }\n' funcs += ' return icd_term->dispatch.' @@ -1145,9 +1217,9 @@ class LoaderExtensionOutputGenerator(OutputGenerator): funcs += 'phys_dev_term->phys_dev' elif param.type == 'VkSurfaceKHR': funcs += 'icd_surface->real_icd_surfaces[icd_index]' - elif 'DebugMarkerSetObject' in ext_cmd.name and param.name == 'pNameInfo': + elif ('DebugMarkerSetObject' in ext_cmd.name or 'SetDebugUtilsObject' in ext_cmd.name) and param.name == 'pNameInfo': funcs += '&local_name_info' - elif 'DebugMarkerSetObject' in ext_cmd.name and param.name == 'pTagInfo': + elif ('DebugMarkerSetObject' in ext_cmd.name or 'SetDebugUtilsObject' in ext_cmd.name) and param.name == 'pTagInfo': funcs += '&local_tag_info' else: funcs += param.name @@ -1202,7 +1274,8 @@ class LoaderExtensionOutputGenerator(OutputGenerator): for cur_cmd in self.ext_commands: if ('VK_VERSION_' in cur_cmd.ext_name or cur_cmd.ext_name in WSI_EXT_NAMES or - cur_cmd.ext_name in AVOID_EXT_NAMES): + cur_cmd.ext_name in AVOID_EXT_NAMES or + cur_cmd.name in AVOID_CMD_NAMES ): continue if cur_cmd.ext_name != cur_extension_name: @@ -1252,8 +1325,8 @@ class LoaderExtensionOutputGenerator(OutputGenerator): create_func += ' for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {\n' for ext in entries: if ('VK_VERSION_' in ext.name or ext.name in WSI_EXT_NAMES or - ext.name in AVOID_EXT_NAMES or ext.type == 'device' or - ext.num_commands == 0): + ext.name in AVOID_EXT_NAMES or ext.name in AVOID_CMD_NAMES or + ext.type == 'device' or ext.num_commands == 0): continue if ext.name != cur_extension_name: diff --git a/scripts/object_tracker_generator.py b/scripts/object_tracker_generator.py index 405a5b7c..26c1105a 100644 --- a/scripts/object_tracker_generator.py +++ b/scripts/object_tracker_generator.py @@ -172,6 +172,17 @@ class ObjectTrackerOutputGenerator(OutputGenerator): 'vkGetDeviceQueue', 'vkGetSwapchainImagesKHR', 'vkCreateDescriptorSetLayout', + 'vkCreateDebugUtilsMessengerEXT', + 'vkDestroyDebugUtilsMessengerEXT', + 'vkSubmitDebugUtilsMessageEXT', + 'vkSetDebugUtilsObjectNameEXT', + 'vkSetDebugUtilsObjectTagEXT', + 'vkQueueBeginDebugUtilsLabelEXT', + 'vkQueueEndDebugUtilsLabelEXT', + 'vkQueueInsertDebugUtilsLabelEXT', + 'vkCmdBeginDebugUtilsLabelEXT', + 'vkCmdEndDebugUtilsLabelEXT', + 'vkCmdInsertDebugUtilsLabelEXT', ] # These VUIDS are not implicit, but are best handled in this layer. Codegen for vkDestroy calls will generate a key # which is translated here into a good VU. Saves ~40 checks. diff --git a/scripts/parameter_validation_generator.py b/scripts/parameter_validation_generator.py index edd49b55..4246eeae 100644 --- a/scripts/parameter_validation_generator.py +++ b/scripts/parameter_validation_generator.py @@ -127,17 +127,12 @@ class ParameterValidationOutputGenerator(OutputGenerator): self.blacklist = [ 'vkGetInstanceProcAddr', 'vkGetDeviceProcAddr', - 'vkEnumerateInstanceLayerProperties', - 'vkEnumerateInstanceExtensionsProperties', - 'vkEnumerateDeviceLayerProperties', - 'vkEnumerateDeviceExtensionsProperties', - 'vkCreateDebugReportCallbackKHR', - 'vkDestroyDebugReportCallbackKHR', + 'vkEnumerateInstanceVersion', 'vkEnumerateInstanceLayerProperties', 'vkEnumerateInstanceExtensionProperties', 'vkEnumerateDeviceLayerProperties', - 'vkCmdDebugMarkerEndEXT', 'vkEnumerateDeviceExtensionProperties', + 'vkCmdDebugMarkerEndEXT', ] self.validate_only = [ 'vkCreateInstance', @@ -150,6 +145,8 @@ class ParameterValidationOutputGenerator(OutputGenerator): 'vkCreateCommandPool', 'vkCreateRenderPass', 'vkDestroyRenderPass', + 'vkCreateDebugUtilsMessengerEXT', + 'vkDestroyDebugUtilsMessengerEXT', ] # Structure fields to ignore self.structMemberBlacklist = { 'VkWriteDescriptorSet' : ['dstSet'] } diff --git a/scripts/threading_generator.py b/scripts/threading_generator.py index fd88909c..4ac65d67 100644 --- a/scripts/threading_generator.py +++ b/scripts/threading_generator.py @@ -384,6 +384,8 @@ class ThreadOutputGenerator(OutputGenerator): 'vkEnumerateInstanceExtensionProperties', 'vkEnumerateDeviceLayerProperties', 'vkEnumerateDeviceExtensionProperties', + 'vkCreateDebugUtilsMessengerEXT', + 'vkDestroyDebugUtilsMessengerEXT', ] if name in special_functions: decls = self.makeCDecls(cmdinfo.elem) @@ -392,7 +394,7 @@ class ThreadOutputGenerator(OutputGenerator): self.appendSection('command', decls[0]) self.intercepts += [ ' {"%s", (void*)%s},' % (name,name[2:]) ] return - if "QueuePresentKHR" in name or ("DebugMarker" in name and "EXT" in name): + if "QueuePresentKHR" in name or (("DebugMarker" in name or "DebugUtilsObject" in name) and "EXT" in name): self.appendSection('command', '// TODO - not wrapping EXT function ' + name) return # Determine first if this function needs to be intercepted diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py index 78526a3e..289a5bbe 100644 --- a/scripts/unique_objects_generator.py +++ b/scripts/unique_objects_generator.py @@ -157,6 +157,8 @@ class UniqueObjectsOutputGenerator(OutputGenerator): 'vkGetDisplayModeProperties2KHR', 'vkCreateRenderPass', 'vkDestroyRenderPass', + 'vkSetDebugUtilsObjectNameEXT', + 'vkSetDebugUtilsObjectTagEXT', ] # Commands shadowed by interface functions and are not implemented self.interface_functions = [ @@ -165,10 +167,14 @@ class UniqueObjectsOutputGenerator(OutputGenerator): 'vkGetDisplayPlaneSupportedDisplaysKHR', 'vkGetDisplayModePropertiesKHR', 'vkGetDisplayPlaneCapabilitiesKHR', - # DebugReport APIs are hooked, but handled separately in the source file + # VK_EXT_debug_report APIs are hooked, but handled separately in the source file 'vkCreateDebugReportCallbackEXT', 'vkDestroyDebugReportCallbackEXT', 'vkDebugReportMessageEXT', + # VK_EXT_debug_utils APIs are hooked, but handled separately in the source file + 'vkCreateDebugUtilsMessengerEXT', + 'vkDestroyDebugUtilsMessengerEXT', + 'vkSubmitDebugUtilsMessageEXT', ] self.headerVersion = None # Internal state - accumulators for different inner block text diff --git a/scripts/vuid_mapping.py b/scripts/vuid_mapping.py index e3dbfdf9..88df867a 100644 --- a/scripts/vuid_mapping.py +++ b/scripts/vuid_mapping.py @@ -1104,7 +1104,7 @@ uniqueid_set = set() # store uniqueid to make sure we don't have duplicates # Convert a string VUID into numerical value # See "VUID Mapping Details" comment above for more info def convertVUID(vuid_string): - """Convert a string-based VUID into a numberical value""" + """Convert a string-based VUID into a numerical value""" #func_struct_update = False #imp_param_update = False if vuid_string in ['', None]: |
