aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Kraus <petr_kraus@email.cz>2019-08-15 17:19:33 +0200
committerMark Lobodzinski <mark@lunarg.com>2019-08-19 10:01:19 -0600
commit139757bc47fde17503384fb473046277523823b9 (patch)
tree58433b74d0d8fe303f68135a34d71b85320facab
parent715bcc70755d257dd4857e2f4d36595a0213f278 (diff)
downloadvulkan-validation-layers-139757bc47fde17503384fb473046277523823b9.tar.gz
layers: Validate inherited conditional rendering
-rw-r--r--layers/parameter_validation_utils.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/layers/parameter_validation_utils.cpp b/layers/parameter_validation_utils.cpp
index cb9818e93..7e953abb2 100644
--- a/layers/parameter_validation_utils.cpp
+++ b/layers/parameter_validation_utils.cpp
@@ -2296,6 +2296,21 @@ bool StatelessValidation::manual_PreCallValidateBeginCommandBuffer(VkCommandBuff
skip |= validate_reserved_flags(cmd_name, "pBeginInfo->pInheritanceInfo->pipelineStatistics", pInfo->pipelineStatistics,
"VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058");
}
+
+ const auto *conditional_rendering = lvl_find_in_chain<VkCommandBufferInheritanceConditionalRenderingInfoEXT>(pInfo->pNext);
+ if (conditional_rendering) {
+ const auto *cr_features =
+ lvl_find_in_chain<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(physical_device_features2.pNext);
+ const auto inherited_conditional_rendering = cr_features && cr_features->inheritedConditionalRendering;
+ if (!inherited_conditional_rendering && conditional_rendering->conditionalRenderingEnable == VK_TRUE) {
+ skip |= log_msg(
+ report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
+ HandleToUint64(commandBuffer),
+ "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
+ "vkBeginCommandBuffer: Inherited conditional rendering is disabled, but "
+ "pBeginInfo->pInheritanceInfo->pNext<VkCommandBufferInheritanceConditionalRenderingInfoEXT> is VK_TRUE.");
+ }
+ }
}
return skip;