i, validation_error_map[VALIDATION_ERROR_00957]);
}
+ // dstSet must be a valid VkDescriptorSet handle
+ skip |= validate_required_handle(report_data, "vkUpdateDescriptorSets",
+ ParameterName("pDescriptorWrites[%i].dstSet", ParameterName::IndexVector{i}),
+ pDescriptorWrites[i].dstSet);
+
if ((pDescriptorWrites[i].descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER) ||
(pDescriptorWrites[i].descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER) ||
(pDescriptorWrites[i].descriptorType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE) ||
'vkEnumerateDeviceExtensionsProperties',
'vkCreateDebugReportCallbackEXT',
'vkDebugReportMessageEXT']
+ # Structure fields to ignore
+ self.structMemberBlacklist = { 'VkWriteDescriptorSet' : ['dstSet'] }
# Validation conditions for some special case struct members that are conditionally validated
self.structMemberValidationConditions = { 'VkPipelineColorBlendStateCreateInfo' : { 'logicOp' : '{}logicOpEnable == VK_TRUE' } }
# Header version
isoptional = False
if self.paramIsOptional(member) or (name == 'pNext') or (isstaticarray):
isoptional = True
+ # Determine if value should be ignored by code generation.
+ noautovalidity = False
+ if (member.attrib.get('noautovalidity') is not None) or ((typeName in self.structMemberBlacklist) and (name in self.structMemberBlacklist[typeName])):
+ noautovalidity = True
membersInfo.append(self.CommandParam(type=type, name=name,
ispointer=self.paramIsPointer(member),
isstaticarray=isstaticarray,
isconst=True if 'const' in cdecl else False,
isoptional=isoptional,
iscount=iscount,
- noautovalidity=True if member.attrib.get('noautovalidity') is not None else False,
+ noautovalidity=noautovalidity,
len=self.getLen(member),
extstructs=member.attrib.get('validextensionstructs') if name == 'pNext' else None,
condition=conditions[name] if conditions and name in conditions else None,