aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/helper_file_generator.py2
-rw-r--r--scripts/parameter_validation_generator.py7
-rw-r--r--scripts/unique_objects_generator.py16
3 files changed, 12 insertions, 13 deletions
diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py
index 895075bb..7d00e6d6 100644
--- a/scripts/helper_file_generator.py
+++ b/scripts/helper_file_generator.py
@@ -344,7 +344,7 @@ class HelperFileOutputGenerator(OutputGenerator):
isconst=True if 'const' in cdecl else False,
iscount=True if name in lens else False,
len=self.getLen(member),
- extstructs=member.attrib.get('validextensionstructs') if name == 'pNext' else None,
+ extstructs=self.registry.validextensionstructs[typeName] if name == 'pNext' else None,
cdecl=cdecl))
self.structMembers.append(self.StructMemberData(name=typeName, members=membersInfo, ifdef_protect=self.featureExtraProtect))
#
diff --git a/scripts/parameter_validation_generator.py b/scripts/parameter_validation_generator.py
index 5a945f72..f1dfba1f 100644
--- a/scripts/parameter_validation_generator.py
+++ b/scripts/parameter_validation_generator.py
@@ -422,7 +422,7 @@ class ParamCheckerOutputGenerator(OutputGenerator):
iscount=iscount,
noautovalidity=noautovalidity,
len=self.getLen(member),
- extstructs=member.attrib.get('validextensionstructs') if name == 'pNext' else None,
+ extstructs=self.registry.validextensionstructs[typeName] if name == 'pNext' else None,
condition=conditions[name] if conditions and name in conditions else None,
cdecl=cdecl))
self.structMembers.append(self.StructMemberData(name=typeName, members=membersInfo))
@@ -795,9 +795,8 @@ class ParamCheckerOutputGenerator(OutputGenerator):
if value.extstructs:
extStructVar = 'allowed_structs_{}'.format(struct_type_name)
extStructCount = 'ARRAY_SIZE({})'.format(extStructVar)
- structs = value.extstructs.split(',')
- extStructNames = '"' + ', '.join(structs) + '"'
- checkExpr.append('const VkStructureType {}[] = {{ {} }};\n'.format(extStructVar, ', '.join([self.getStructType(s) for s in structs])))
+ extStructNames = '"' + ', '.join(value.extstructs) + '"'
+ checkExpr.append('const VkStructureType {}[] = {{ {} }};\n'.format(extStructVar, ', '.join([self.getStructType(s) for s in value.extstructs])))
checkExpr.append('skipCall |= validate_struct_pnext(layer_data->report_data, "{}", {ppp}"{}"{pps}, {}, {}{}, {}, {}, GeneratedHeaderVersion, {});\n'.format(
funcPrintName, valuePrintName, extStructNames, prefix, value.name, extStructCount, extStructVar, vuid, **postProcSpec))
return checkExpr
diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py
index 3af26fb0..9cfa9546 100644
--- a/scripts/unique_objects_generator.py
+++ b/scripts/unique_objects_generator.py
@@ -172,7 +172,7 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
self.cmd_info_data = [] # Save the cmdinfo data for wrapping the handles when processing is complete
self.structMembers = [] # List of StructMemberData records for all Vulkan structs
self.extension_structs = [] # List of all structs or sister-structs containing handles
- # A sister-struct may contain no handles but shares <validextensionstructs> with one that does
+ # A sister-struct may contain no handles but shares a structextends attribute with one that does
self.structTypes = dict() # Map of Vulkan struct typename to required VkStructureType
self.struct_member_dict = dict()
# Named tuples to store struct and command data
@@ -400,7 +400,7 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
# Store the required type value
self.structTypes[typeName] = self.StructType(name=name, value=value)
# Store pointer/array/string info
- extstructs = member.attrib.get('validextensionstructs') if name == 'pNext' else None
+ extstructs = self.registry.validextensionstructs[typeName] if name == 'pNext' else None
membersInfo.append(self.CommandParam(type=type,
name=name,
ispointer=self.paramIsPointer(member),
@@ -457,18 +457,18 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
ndo_list.add(item)
return ndo_list
#
- # Construct list of extension structs containing handles, or extension structs that share a <validextensionstructs>
- # tag WITH an extension struct containing handles. All extension structs in any pNext chain will have to be copied.
+ # Construct list of extension structs containing handles, or extension structs that share a structextends attribute
+ # WITH an extension struct containing handles. All extension structs in any pNext chain will have to be copied.
# TODO: make this recursive -- structs buried three or more levels deep are not searched for extensions
def GenerateCommandWrapExtensionList(self):
for struct in self.structMembers:
if (len(struct.members) > 1) and struct.members[1].extstructs is not None:
found = False;
- for item in struct.members[1].extstructs.split(','):
+ for item in struct.members[1].extstructs:
if item != '' and self.struct_contains_ndo(item) == True:
found = True
if found == True:
- for item in struct.members[1].extstructs.split(','):
+ for item in struct.members[1].extstructs:
if item != '' and item not in self.extension_structs:
self.extension_structs.append(item)
#
@@ -477,7 +477,7 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
if struct_type in self.struct_member_dict:
param_info = self.struct_member_dict[struct_type]
if (len(param_info) > 1) and param_info[1].extstructs is not None:
- for item in param_info[1].extstructs.split(','):
+ for item in param_info[1].extstructs:
if item in self.extension_structs:
return True
return False
@@ -820,7 +820,7 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
islocal = True
isdestroy = True if True in [destroy_txt in cmdname for destroy_txt in ['Destroy', 'Free']] else False
iscreate = True if True in [create_txt in cmdname for create_txt in ['Create', 'Allocate', 'GetRandROutputDisplayEXT', 'RegisterDeviceEvent', 'RegisterDisplayEvent']] else False
- extstructs = member.attrib.get('validextensionstructs') if name == 'pNext' else None
+ extstructs = self.registry.validextensionstructs[type] if name == 'pNext' else None
membersInfo.append(self.CommandParam(type=type,
name=name,
ispointer=ispointer,