From 96a24419d8c7b3424798ff81fb9bfb06009419a0 Mon Sep 17 00:00:00 2001 From: John Zulauf Date: Mon, 6 Nov 2017 11:15:53 -0700 Subject: 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 --- layers/parameter_validation_utils.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'layers/parameter_validation_utils.cpp') diff --git a/layers/parameter_validation_utils.cpp b/layers/parameter_validation_utils.cpp index dec74caa..41a51acb 100644 --- a/layers/parameter_validation_utils.cpp +++ b/layers/parameter_validation_utils.cpp @@ -1209,6 +1209,24 @@ bool pv_vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache "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 -- cgit v1.2.3