diff options
| author | Chris Forbes <chrisforbes@google.com> | 2016-07-01 11:45:49 +1200 |
|---|---|---|
| committer | Chris Forbes <chrisforbes@google.com> | 2016-07-01 12:02:31 +1200 |
| commit | b18697e25ba49b3e86264be6e4c837454358508c (patch) | |
| tree | 52a9031d965bd20104fd622af2223810c44caf22 /layers/core_validation.cpp | |
| parent | 3bca19296ac3001ebf1e787ed5d2945e6360aa10 (diff) | |
| download | usermoji-b18697e25ba49b3e86264be6e4c837454358508c.tar.xz | |
layers: Fix crash in ValidateDependencies with VK_ATTACHMENT_UNUSED
Signed-off-by: Chris Forbes <chrisforbes@google.com>
Diffstat (limited to 'layers/core_validation.cpp')
| -rw-r--r-- | layers/core_validation.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index d4875043..31cb5a1b 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -8653,6 +8653,8 @@ static bool ValidateDependencies(const layer_data *my_data, FRAMEBUFFER_NODE con attachmentIndices.clear(); for (uint32_t j = 0; j < subpass.inputAttachmentCount; ++j) { uint32_t attachment = subpass.pInputAttachments[j].attachment; + if (attachment == VK_ATTACHMENT_UNUSED) + continue; input_attachment_to_subpass[attachment].push_back(i); for (auto overlapping_attachment : overlapping_attachments[attachment]) { input_attachment_to_subpass[overlapping_attachment].push_back(i); @@ -8660,6 +8662,8 @@ static bool ValidateDependencies(const layer_data *my_data, FRAMEBUFFER_NODE con } for (uint32_t j = 0; j < subpass.colorAttachmentCount; ++j) { uint32_t attachment = subpass.pColorAttachments[j].attachment; + if (attachment == VK_ATTACHMENT_UNUSED) + continue; output_attachment_to_subpass[attachment].push_back(i); for (auto overlapping_attachment : overlapping_attachments[attachment]) { output_attachment_to_subpass[overlapping_attachment].push_back(i); @@ -8687,12 +8691,16 @@ static bool ValidateDependencies(const layer_data *my_data, FRAMEBUFFER_NODE con const VkSubpassDescription &subpass = pCreateInfo->pSubpasses[i]; // If the attachment is an input then all subpasses that output must have a dependency relationship for (uint32_t j = 0; j < subpass.inputAttachmentCount; ++j) { - const uint32_t &attachment = subpass.pInputAttachments[j].attachment; + uint32_t attachment = subpass.pInputAttachments[j].attachment; + if (attachment == VK_ATTACHMENT_UNUSED) + continue; CheckDependencyExists(my_data, i, output_attachment_to_subpass[attachment], subpass_to_node, skip_call); } // If the attachment is an output then all subpasses that use the attachment must have a dependency relationship for (uint32_t j = 0; j < subpass.colorAttachmentCount; ++j) { - const uint32_t &attachment = subpass.pColorAttachments[j].attachment; + uint32_t attachment = subpass.pColorAttachments[j].attachment; + if (attachment == VK_ATTACHMENT_UNUSED) + continue; CheckDependencyExists(my_data, i, output_attachment_to_subpass[attachment], subpass_to_node, skip_call); CheckDependencyExists(my_data, i, input_attachment_to_subpass[attachment], subpass_to_node, skip_call); } |
