layers: Update pipeline multisample pnext check
authorJohn Zulauf <jzulauf@lunarg.com>
Tue, 14 Nov 2017 18:43:19 +0000 (11:43 -0700)
committerjzulauf-lunarg <32470354+jzulauf-lunarg@users.noreply.github.com>
Thu, 30 Nov 2017 20:02:21 +0000 (13:02 -0700)
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

layers/parameter_validation_utils.cpp

index 41a51ac..1efb0c8 100644 (file)
@@ -1170,10 +1170,19 @@ bool pv_vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache
                                     "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",