layers: Added PipelineMultiSample VUID checks
Added validation checks for:
VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784
(VALIDATION_ERROR_10000620)
If the sample rate shading feature is not enabled,
sampleShadingEnable must be VK_FALSE
VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786
(VALIDATION_ERROR_10000624)
minSampleShading must be in the range [0,1]
Change-Id: I21cdaf99f8970df4f2e03026a4dae00746ad8386
diff --git a/layers/parameter_validation_utils.cpp b/layers/parameter_validation_utils.cpp
index dec74ca..41a51ac 100644
--- a/layers/parameter_validation_utils.cpp
+++ b/layers/parameter_validation_utils.cpp
@@ -1209,6 +1209,24 @@
"VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO",
i);
}
+ if (pCreateInfos[i].pMultisampleState->sampleShadingEnable == VK_TRUE) {
+ if (!device_data->physical_device_features.sampleRateShading) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ __LINE__, VALIDATION_ERROR_10000620, LayerName,
+ "vkCreateGraphicsPipelines(): parameter "
+ "pCreateInfos[%d].pMultisampleState->sampleShadingEnable: %s",
+ i, validation_error_map[VALIDATION_ERROR_10000620]);
+ }
+ // TODO Add documentation issue about when minSampleShading must be in range and when it is ignored
+ // For now a "least noise" test *only* when sampleShadingEnable is VK_TRUE.
+ if (!in_inclusive_range(pCreateInfos[i].pMultisampleState->minSampleShading, 0.F, 1.0F)) {
+ skip |= log_msg(
+ report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__,
+ VALIDATION_ERROR_10000624, LayerName,
+ "vkCreateGraphicsPipelines(): parameter pCreateInfos[%d].pMultisampleState->minSampleShading: %s",
+ i, validation_error_map[VALIDATION_ERROR_10000624]);
+ }
+ }
}
// TODO: Conditional NULL check based on subpass depth/stencil attachment