layers: Fix param_val codegen for arrays of structs
New extensions exposed a hole where arrays of structs were not
getting deferenced correctly.
Change-Id: Ia2474babee10f25c1446dfe58b5bd9778d3c9abc
diff --git a/scripts/parameter_validation_generator.py b/scripts/parameter_validation_generator.py
index 047405d..7c78b5f 100644
--- a/scripts/parameter_validation_generator.py
+++ b/scripts/parameter_validation_generator.py
@@ -801,8 +801,12 @@
expr.append(indent + '{')
indent = self.incIndent(indent)
# Prefix for value name to display in error message
- memberNamePrefix = '{}{}[{}].'.format(prefix, value.name, indexName)
- memberDisplayNamePrefix = ('{}[%i].'.format(valueDisplayName), indexName)
+ if value.ispointer == 2:
+ memberNamePrefix = '{}{}[{}]->'.format(prefix, value.name, indexName)
+ memberDisplayNamePrefix = ('{}[%i]->'.format(valueDisplayName), indexName)
+ else:
+ memberNamePrefix = '{}{}[{}].'.format(prefix, value.name, indexName)
+ memberDisplayNamePrefix = ('{}[%i].'.format(valueDisplayName), indexName)
else:
memberNamePrefix = '{}{}->'.format(prefix, value.name)
memberDisplayNamePrefix = '{}->'.format(valueDisplayName)
@@ -821,6 +825,8 @@
def genFuncBody(self, funcName, values, valuePrefix, displayNamePrefix, structTypeName):
lines = [] # Generated lines of code
unused = [] # Unused variable names
+ if funcName == "vkRegisterObjectsNVX":
+ indent = 0
for value in values:
usedLines = []
lenParam = None
@@ -925,6 +931,8 @@
usedLines.append('skipCall |= validate_bool32(report_data, "{}", {ppp}"{}"{pps}, {}{});\n'.format(funcName, valueDisplayName, valuePrefix, value.name, **postProcSpec))
elif value.israngedenum:
enumRange = self.enumRanges[value.type]
+ if value.type == "VkObjectEntryTypeNVX":
+ garbage = 2
usedLines.append('skipCall |= validate_ranged_enum(report_data, "{}", {ppp}"{}"{pps}, "{}", {}, {}, {}{});\n'.format(funcName, valueDisplayName, value.type, enumRange[0], enumRange[1], valuePrefix, value.name, **postProcSpec))
#
# If this is a struct, see if it contains members that need to be checked