layers: Update pipeline multisample pnext check
Updated validation check for
VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext
(VALIDATION_ERROR_1001c40d) to include the valid extension pNext sType
values valid for the current spec:
VkPipelineCoverageModulationStateCreateInfoNV,
VkPipelineCoverageToColorStateCreateInfoNV, or
VkPipelineSampleLocationsStateCreateInfoEXT
Change-Id: Ic3e054110c2bad4b44121a67e7e61e627fa9c559
diff --git a/layers/parameter_validation_utils.cpp b/layers/parameter_validation_utils.cpp
index 41a51ac..1efb0c8 100644
--- a/layers/parameter_validation_utils.cpp
+++ b/layers/parameter_validation_utils.cpp
@@ -1170,10 +1170,19 @@
"is VK_FALSE, pCreateInfos[%d].pMultisampleState must not be NULL. %s",
i, i, validation_error_map[VALIDATION_ERROR_096005de]);
} else {
+ constexpr const VkStructureType valid_next_stypes[] = {
+ LvlTypeMap<VkPipelineCoverageModulationStateCreateInfoNV>::kSType,
+ LvlTypeMap<VkPipelineCoverageToColorStateCreateInfoNV>::kSType,
+ LvlTypeMap<VkPipelineSampleLocationsStateCreateInfoEXT>::kSType};
+ constexpr const char *valid_struct_names =
+ "VkPipelineCoverageModulationStateCreateInfoNV, "
+ "VkPipelineCoverageToColorStateCreateInfoNV, "
+ "VkPipelineSampleLocationsStateCreateInfoEXT";
skip |= validate_struct_pnext(
report_data, "vkCreateGraphicsPipelines",
- ParameterName("pCreateInfos[%i].pMultisampleState->pNext", ParameterName::IndexVector{i}), NULL,
- pCreateInfos[i].pMultisampleState->pNext, 0, NULL, GeneratedHeaderVersion, VALIDATION_ERROR_1001c40d);
+ ParameterName("pCreateInfos[%i].pMultisampleState->pNext", ParameterName::IndexVector{i}),
+ valid_struct_names, pCreateInfos[i].pMultisampleState->pNext, 3, valid_next_stypes, GeneratedHeaderVersion,
+ VALIDATION_ERROR_1001c40d);
skip |= validate_reserved_flags(
report_data, "vkCreateGraphicsPipelines",