diff options
| author | Slawomir Cygan <slawomir.cygan@intel.com> | 2018-04-24 17:18:26 +0200 |
|---|---|---|
| committer | Chris Forbes <chrisf@ijw.co.nz> | 2018-04-30 10:57:17 -0700 |
| commit | ccaed44dc376d964fb98d51d2136132fa9a2f158 (patch) | |
| tree | e16bc643ab5223e8b7692b9936da042d48c5b7de /layers/buffer_validation.cpp | |
| parent | 45b3c613f8676edcf2a6dd6e07fc685c3e50966c (diff) | |
| download | usermoji-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.cpp | 15 |
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; } |
