aboutsummaryrefslogtreecommitdiff
path: root/layers/buffer_validation.cpp
diff options
context:
space:
mode:
authorSlawomir Cygan <slawomir.cygan@intel.com>2018-04-24 17:18:26 +0200
committerChris Forbes <chrisf@ijw.co.nz>2018-04-30 10:57:17 -0700
commitccaed44dc376d964fb98d51d2136132fa9a2f158 (patch)
treee16bc643ab5223e8b7692b9936da042d48c5b7de /layers/buffer_validation.cpp
parent45b3c613f8676edcf2a6dd6e07fc685c3e50966c (diff)
downloadusermoji-ccaed44dc376d964fb98d51d2136132fa9a2f158.tar.xz
core validation: extend CLEAR LOAD_OP check to new DS image layouts
Extend check for load operation vs first time use image layout to new read-only depth stencil image layouts. The new layouts were added in VK_KHR_maintenance2 / Vulkan 1.1 and follow similar restrictions to VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL. Spec: " For any member of pAttachments with a loadOp equal to VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment must not specify a layout equal to VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL. For any member of pAttachments with a stencilLoadOp equal to VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment must not specify a layout equal to VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL. "
Diffstat (limited to 'layers/buffer_validation.cpp')
-rw-r--r--layers/buffer_validation.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp
index ca1f57cb..d6f87865 100644
--- a/layers/buffer_validation.cpp
+++ b/layers/buffer_validation.cpp
@@ -2824,6 +2824,21 @@ bool ValidateLayoutVsAttachmentDescription(const debug_report_data *report_data,
string_VkImageLayout(first_layout));
}
}
+ if (attachment_description.loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR) {
+ if (first_layout == VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ VALIDATION_ERROR_12200c3c, "Cannot clear attachment %d with invalid first layout %s.", attachment,
+ string_VkImageLayout(first_layout));
+ }
+ }
+
+ if (attachment_description.stencilLoadOp == VK_ATTACHMENT_LOAD_OP_CLEAR) {
+ if (first_layout == VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ VALIDATION_ERROR_12200c3e, "Cannot clear attachment %d with invalid first layout %s.", attachment,
+ string_VkImageLayout(first_layout));
+ }
+ }
return skip;
}