From 49c306bc491d883c1fd70154b62dfd42cba64599 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Thu, 12 Oct 2017 12:25:00 -0700 Subject: layers: Only include self-dependencies in subpass->dep index Only self-dependencies permit barriers within the renderpass, so we don't want any other dependencies here. Fixes #2123 --- layers/core_validation.cpp | 4 +--- layers/core_validation_types.h | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 995f5d3e..b12dc861 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -7723,13 +7723,11 @@ static bool CreatePassDAG(const layer_data *dev_data, const VkRenderPassCreateIn "Dependency graph must be specified such that an earlier pass cannot depend on a later pass."); } else if (dependency.srcSubpass == dependency.dstSubpass) { has_self_dependency[dependency.srcSubpass] = true; + subpass_to_dep_index[dependency.srcSubpass] = i; } else { subpass_to_node[dependency.dstSubpass].prev.push_back(dependency.srcSubpass); subpass_to_node[dependency.srcSubpass].next.push_back(dependency.dstSubpass); } - if (dependency.srcSubpass != VK_SUBPASS_EXTERNAL) { - subpass_to_dep_index[dependency.srcSubpass] = i; - } } return skip; } diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h index 7038d822..11fbd3e3 100644 --- a/layers/core_validation_types.h +++ b/layers/core_validation_types.h @@ -379,7 +379,7 @@ struct RENDER_PASS_STATE : public BASE_NODE { safe_VkRenderPassCreateInfo createInfo; std::vector hasSelfDependency; std::vector subpassToNode; - std::vector subpass_to_dependency_index; // Map srcSubpass to its pDependency index (or -1 if none) + std::vector subpass_to_dependency_index; // srcSubpass to dependency index of self dep, or -1 if none std::unordered_map attachment_first_read; RENDER_PASS_STATE(VkRenderPassCreateInfo const *pCreateInfo) : createInfo(pCreateInfo) {} -- cgit v1.2.3