From 7ea6c8637ba179b6f34f2e513dcf5d38d52b4f4e Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 15 Apr 2018 18:31:06 -0700 Subject: layers: Validate subpass dependency access vs stage masks --- layers/core_validation.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'layers/core_validation.cpp') diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index b9860852..a798cc62 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -9167,10 +9167,25 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass(VkDevice device, const VkRenderP // ValidateLayouts. skip |= ValidateRenderpassAttachmentUsage(dev_data, pCreateInfo); for (uint32_t i = 0; i < pCreateInfo->dependencyCount; ++i) { - skip |= ValidateStageMaskGsTsEnables(dev_data, pCreateInfo->pDependencies[i].srcStageMask, "vkCreateRenderPass()", - VALIDATION_ERROR_13e006b8, VALIDATION_ERROR_13e006bc); - skip |= ValidateStageMaskGsTsEnables(dev_data, pCreateInfo->pDependencies[i].dstStageMask, "vkCreateRenderPass()", - VALIDATION_ERROR_13e006ba, VALIDATION_ERROR_13e006be); + auto const &dependency = pCreateInfo->pDependencies[i]; + skip |= ValidateStageMaskGsTsEnables(dev_data, dependency.srcStageMask, "vkCreateRenderPass()", VALIDATION_ERROR_13e006b8, + VALIDATION_ERROR_13e006bc); + skip |= ValidateStageMaskGsTsEnables(dev_data, dependency.dstStageMask, "vkCreateRenderPass()", VALIDATION_ERROR_13e006ba, + VALIDATION_ERROR_13e006be); + + if (!ValidateAccessMaskPipelineStage(dependency.srcAccessMask, dependency.srcStageMask)) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, + VALIDATION_ERROR_13e006c8, + "CreateRenderPass: pDependencies[%u].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X).", i, + dependency.srcAccessMask, dependency.srcStageMask); + } + + if (!ValidateAccessMaskPipelineStage(dependency.dstAccessMask, dependency.dstStageMask)) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, + VALIDATION_ERROR_13e006ca, + "CreateRenderPass: pDependencies[%u].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X).", i, + dependency.dstAccessMask, dependency.dstStageMask); + } } if (!skip) { skip |= ValidateLayouts(dev_data, device, pCreateInfo); -- cgit v1.2.3