From ccaed44dc376d964fb98d51d2136132fa9a2f158 Mon Sep 17 00:00:00 2001 From: Slawomir Cygan Date: Tue, 24 Apr 2018 17:18:26 +0200 Subject: 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. " --- layers/buffer_validation.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'layers/buffer_validation.cpp') 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; } -- cgit v1.2.3