diff options
| author | John Zulauf <jzulauf@lunarg.com> | 2018-03-16 11:52:57 -0600 |
|---|---|---|
| committer | jzulauf-lunarg <32470354+jzulauf-lunarg@users.noreply.github.com> | 2018-03-20 08:59:20 -0600 |
| commit | 4a1795eef9480abad80d3040a33c2ef3fe0da9eb (patch) | |
| tree | 1c9007a7e3350f26d36812cb26f6272a0dd5a6bd /scripts | |
| parent | 0d408bad81d516114f2f42dc0220189c0a09b042 (diff) | |
| download | usermoji-4a1795eef9480abad80d3040a33c2ef3fe0da9eb.tar.xz | |
layers: Add alias support to kVulkanObjectTypes
Updated vk_object_types.h generation to correctly handle promoted and
alias handle types.
Change-Id: I3d655b0f408a6cee08bf3d1ce453d9c5aac61376
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/helper_file_generator.py | 13 |
1 files changed, 12 insertions, 1 deletions
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 <mark@lunarg.com> # Author: Tobin Ehlis <tobine@google.com> +# Author: John Zulauf <jzulauf@lunarg.com> 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 |
