aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorChris Forbes <chrisf@ijw.co.nz>2018-04-15 18:31:06 -0700
committerChris Forbes <chrisf@ijw.co.nz>2018-04-17 14:30:49 -0700
commit7ea6c8637ba179b6f34f2e513dcf5d38d52b4f4e (patch)
tree9c5679b2f18c3fc8b8fce546d8218d86fd4e6aeb /layers/core_validation.cpp
parent2f1dbdbfe2b8adac45ff00df12a7bfb308070952 (diff)
downloadusermoji-7ea6c8637ba179b6f34f2e513dcf5d38d52b4f4e.tar.xz
layers: Validate subpass dependency access vs stage masks
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp23
1 files changed, 19 insertions, 4 deletions
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);