From 4a1795eef9480abad80d3040a33c2ef3fe0da9eb Mon Sep 17 00:00:00 2001 From: John Zulauf Date: Fri, 16 Mar 2018 11:52:57 -0600 Subject: layers: Add alias support to kVulkanObjectTypes Updated vk_object_types.h generation to correctly handle promoted and alias handle types. Change-Id: I3d655b0f408a6cee08bf3d1ce453d9c5aac61376 --- scripts/helper_file_generator.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py index 7870cd88..ca9ffc5b 100644 --- a/scripts/helper_file_generator.py +++ b/scripts/helper_file_generator.py @@ -19,6 +19,7 @@ # # Author: Mark Lobodzinski # Author: Tobin Ehlis +# Author: John Zulauf import os,re,sys import xml.etree.ElementTree as etree @@ -81,6 +82,7 @@ class HelperFileOutputGenerator(OutputGenerator): self.structTypes = dict() # Map of Vulkan struct typename to required VkStructureType self.structMembers = [] # List of StructMemberData records for all Vulkan structs self.object_types = [] # List of all handle types + self.object_type_aliases = [] # Aliases to handles types (for handles that were extensions) self.debug_report_object_types = [] # Handy copy of debug_report_object_type enum data self.core_object_types = [] # Handy copy of core_object_type enum data self.device_extension_info = dict() # Dict of device extension name defines and ifdef values @@ -206,7 +208,10 @@ class HelperFileOutputGenerator(OutputGenerator): # Otherwise, emit the tag text. category = typeElem.get('category') if category == 'handle': - self.object_types.append(name) + if alias: + self.object_type_aliases.append((name,alias)) + else: + self.object_types.append(name) elif (category == 'struct' or category == 'union'): self.structNames.append(name) self.genStruct(typeinfo, name, alias) @@ -601,16 +606,22 @@ class HelperFileOutputGenerator(OutputGenerator): object_types_header += ' kVulkanObjectTypeUnknown = 0,\n' enum_num = 1 type_list = []; + enum_entry_map = {} # Output enum definition as each handle is processed, saving the names to use for the conversion routine for item in self.object_types: fixup_name = item[2:] enum_entry = 'kVulkanObjectType%s' % fixup_name + enum_entry_map[item] = enum_entry object_types_header += ' ' + enum_entry object_types_header += ' = %d,\n' % enum_num enum_num += 1 type_list.append(enum_entry) object_types_header += ' kVulkanObjectTypeMax = %d,\n' % enum_num + object_types_header += ' // Aliases for backwards compatibilty of "promoted" types\n' + for (name, alias) in self.object_type_aliases: + fixup_name = name[2:] + object_types_header += ' kVulkanObjectType{} = {},\n'.format(fixup_name, enum_entry_map[alias]) object_types_header += '} VulkanObjectType;\n\n' # Output name string helper -- cgit v1.2.3